
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="utf-8">
    <link rel="canonical" href="https://blog.csdn.net/wxflamy/article/details/79347689"/>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta name="renderer" content="webkit"/>
    <meta name="force-rendering" content="webkit"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <meta name="report" content='{"pid": "blog", "spm":"1001.2101"}'>
    <meta name="referrer" content="always">
    <meta http-equiv="Cache-Control" content="no-siteapp" /><link rel="alternate" media="handheld" href="#" />
    <meta name="shenma-site-verification" content="5a59773ab8077d4a62bf469ab966a63b_1497598848">
    <meta name="applicable-device" content="pc">
    <link  href="https://g.csdnimg.cn/static/logo/favicon32.ico"  rel="shortcut icon" type="image/x-icon" />
    <title>rviz中的标记（markers）和交互标记（interactive markers）_我才睡醒的博客-CSDN博客_interactive marker</title>
    <script>
      (function(){ 
        var el = document.createElement("script"); 
        el.src = "https://s3a.pstatp.com/toutiao/push.js?1abfa13dfe74d72d41d83c86d240de427e7cac50c51ead53b2e79d40c7952a23ed7716d05b4a0f683a653eab3e214672511de2457e74e99286eb2c33f4428830"; 
        el.id = "ttzz"; 
        var s = document.getElementsByTagName("script")[0]; 
        s.parentNode.insertBefore(el, s);
      })(window)
    </script>
        <meta name="keywords" content="interactive marker">
        <meta name="csdn-baidu-search"  content='{"autorun":true,"install":true,"keyword":"interactive marker"}'>
    <meta name="description" content="通过发布合适的话题可以在rviz的视图中显示合适的话题。可以在example_rviz_marker中查看例子example_rviz_marker.cpp。#include &amp;amp;lt;ros/ros.h&amp;amp;gt; #include &amp;amp;lt;visualization_msgs/Marker.h&amp;amp;gt; // need this for publishing markers#include...">
    <script src="//g.csdnimg.cn/tingyun/1.8.5/blog.js" type='text/javascript'></script>
        <link rel="stylesheet" type="text/css" href="https://csdnimg.cn/release/blogv2/dist/pc/css/detail_enter-55b4b2a4d8.min.css">
    <script type="application/ld+json">{"@context":"https://ziyuan.baidu.com/contexts/cambrian.jsonld","@id":"https://blog.csdn.net/wxflamy/article/details/79347689","appid":"1638831770136827","pubDate":"2018-02-23T08:18:36","title":"rviz中的标记（markers）和交互标记（interactive markers）_我才睡醒的博客-CSDN博客_interactive marker","upDate":"2018-02-23T08:18:36"}</script>
        <link rel="stylesheet" type="text/css" href="https://csdnimg.cn/release/blogv2/dist/pc/themesSkin/skin3-template/skin3-template-762f7595fd.min.css">
    <script src="https://csdnimg.cn/public/common/libs/jquery/jquery-1.9.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        var isCorporate = false;//注释删除enterprise
        var username =  "wxflamy";
        var skinImg = "white";
        var blog_address = "https://blog.csdn.net/wxflamy";
        var currentUserName = "qq_34761779";
        var isOwner = false;
        var loginUrl = "http://passport.csdn.net/account/login?from=https://blog.csdn.net/wxflamy/article/details/79347689";
        var blogUrl = "https://blog.csdn.net/";
        var avatar = "https://profile.csdnimg.cn/8/4/0/3_wxflamy";
        var articleTitle = "rviz中的标记（markers）和交互标记（interactive markers）";
        var articleDesc = "通过发布合适的话题可以在rviz的视图中显示合适的话题。可以在example_rviz_marker中查看例子example_rviz_marker.cpp。#include &amp;amp;lt;ros/ros.h&amp;amp;gt; #include &amp;amp;lt;visualization_msgs/Marker.h&amp;amp;gt; // need this for publishing markers#include...";
        var articleTitles = "rviz中的标记（markers）和交互标记（interactive markers）_我才睡醒的博客-CSDN博客_interactive marker";
        var nickName = "我才睡醒";
        var articleDetailUrl = "https://blog.csdn.net/wxflamy/article/details/79347689";
        if(window.location.host.split('.').length == 3) {
            blog_address = blogUrl + username;
        }
        var skinStatus = "White";
        var blogStaticHost = "https://csdnimg.cn/release/blogv2/"
        var mallTestStyle = "control"
    </script>
    <script src="https://g.csdnimg.cn/??fixed-sidebar/1.1.6/fixed-sidebar.js" type="text/javascript"></script>
    <script src='//g.csdnimg.cn/common/csdn-report/report.js' type='text/javascript'></script>
    <link rel="stylesheet" type="text/css" href="https://csdnimg.cn/public/sandalstrap/1.4/css/sandalstrap.min.css">
    <style>
        .MathJax, .MathJax_Message, .MathJax_Preview{
            display: none
        }
    </style>
    <script src="https://dup.baidustatic.com/js/ds.js"></script>
</head>
  <body class="nodata " style="">
        <script>
            var toolbarSearchExt = '{"landingWord":["interactive marker"],"queryWord":"","tag":["rviz","marker","interactive"],"title":"rviz中的标记（markers）和交互标记（interactive markers）"}';
        </script>
    <script src="https://g.csdnimg.cn/common/csdn-toolbar/csdn-toolbar.js" type="text/javascript"></script>
    <script>
    (function(){
        var bp = document.createElement('script');
        var curProtocol = window.location.protocol.split(':')[0];
        if (curProtocol === 'https') {
            bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
        }
        else {
            bp.src = 'http://push.zhanzhang.baidu.com/push.js';
        }
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(bp, s);
    })();
    </script>
<link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/pc/css/blog_code-01256533b5.min.css">
<link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/chart-3456820cac.css" />

<script>
    var articleId = 79347689;
    var commentscount = 1;
    var curentUrl = "https://blog.csdn.net/wxflamy/article/details/79347689";
    var myUrl = "https://my.csdn.net/";
    var highlight = ["interactive","marker","rviz","标记","交互","中"];//高亮数组
    var isRecommendModule = true;
    var isBaiduPre = true;
    var baiduCount = 2;
    var setBaiduJsCount = 10;
    var share_card_url = "https://app-blog.csdn.net/share?article_id=79347689&username=wxflamy"
	var articleType = 1;
    var baiduKey = "interactive marker";
    var userNewReport = true;
    var needInsertBaidu = true;
    var recommendRegularDomainArr = ["blog.csdn.net/.+/article/details/","download.csdn.net/download/","edu.csdn.net/course/detail/","ask.csdn.net/questions/","bbs.csdn.net/topics/","www.csdn.net/gather_.+/"]
    var codeStyle = "";
    var baiduSearchType = "baidulandingword";
     var sharData = "{\"hot\":[{\"id\":1,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/a5f4260710904e538002a6ab337939b3.png\"},{\"id\":2,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/188b37199a2c4b74b1d9ffc39e0d52de.png\"},{\"id\":3,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/14ded358b631444581edd98a256bc5af.png\"},{\"id\":4,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/1470f23a770444d986ad551b9c33c5be.png\"},{\"id\":5,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/c329f5181dc74f6c9bd28c982bb9f91d.png\"},{\"id\":6,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/ccd8a3305e81460f9c505c95b432a65f.png\"},{\"id\":7,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/bc89d8283389440d97fc4d30e30f45e1.png\"},{\"id\":8,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/452d485b4a654f5592390550d2445edf.png\"},{\"id\":9,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/f8b9939db2ed474a8f43a643015fc8b7.png\"},{\"id\":10,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/6de8864187ab4ed3b1db0856369c36ff.png\"},{\"id\":11,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/673cc3470ff74072acba958dc0c46e2d.png\"},{\"id\":12,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/930c119760ac4491804db80f9c6d4e3f.png\"},{\"id\":13,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/15e6befb05a24233bc2b65e96aa8d972.png\"},{\"id\":14,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/2075fd6822184b95a41e214de4daec13.png\"},{\"id\":15,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/859b1552db244eb6891a809263a5c657.png\"},{\"id\":16,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/0be2f920f1f74290a98921974a9613fd.png\"},{\"id\":17,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/2e97e00b43f14afab494ea55ef3f4a6e.png\"},{\"id\":18,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/ff4ab252f46e444686f5135d6ebbfec0.png\"},{\"id\":19,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/ae029bbe99564e79911657912d36524f.png\"},{\"id\":20,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/b3ece39963de440388728e9e7b9bf427.png\"},{\"id\":21,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/6f14651a99ba486e926d63b6fa692997.png\"},{\"id\":22,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/83ceddf050084875a341e32dcceca721.png\"},{\"id\":23,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/b90368b8fd5d4c6c8c79a707d877cf7c.png\"},{\"id\":24,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/aeffae14ecf14e079b2616528c9a393b.png\"},{\"id\":25,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/c5a06b5a13d44d16bed868fc3384897a.png\"},{\"id\":26,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/08b697658b844b318cea3b119e9541ef.png\"},{\"id\":27,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/68ccb0b8d09346ac961d2b5c1a8c77bf.png\"},{\"id\":28,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/a2227a247e37418cbe0ea972ba6a859b.png\"},{\"id\":29,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/3a42825fede748f9993e5bb844ad350d.png\"},{\"id\":30,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/8882abc1dd484224b636966ea38555c3.png\"},{\"id\":31,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/4f6a5f636a3e444d83cf8cc06d87a159.png\"},{\"id\":32,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/1953ef79c56b4407b78d7181bdff11c3.png\"},{\"id\":33,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/c04a2a4f772948ed85b5b0380ed36287.png\"},{\"id\":34,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/5b4fecd05091405ea04d8c0f53e9f2c7.png\"},{\"id\":35,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/b89f576d700344e280d6ceb2a66c2420.png\"},{\"id\":36,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/1c65780e11804bbd9971ebadb3d78bcf.png\"},{\"id\":37,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/d590db2055f345db9706eb68a7ec151a.png\"},{\"id\":38,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/fe602f80700b4f6fb3c4a9e4c135510e.png\"},{\"id\":39,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/39ff2fcd31e04feba301a071976a0ba7.png\"},{\"id\":40,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/f9b61b3d113f436b828631837f89fb39.png\"},{\"id\":41,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/df1aca5f610c4ad48cd16da88c9c8499.png\"},{\"id\":42,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/d7acf73a1e6b41399a77a85040e10961.png\"},{\"id\":43,\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/b7f1b63542524b97962ff649ab4e7e23.png\"}],\"vip\":[{\"id\":1,\"vipUrl\":\"https:\\/\\/img-home.csdnimg.cn\\/images\\/20220920101150.png\",\"url\":\"https:\\/\\/img-home.csdnimg.cn\\/images\\/20220920101154.png\"},{\"id\":2,\"vipUrl\":\"https:\\/\\/img-home.csdnimg.cn\\/images\\/20220920101204.png\",\"url\":\"https:\\/\\/img-home.csdnimg.cn\\/images\\/20220920101208.png\"},{\"id\":3,\"vipUrl\":\"https:\\/\\/img-home.csdnimg.cn\\/images\\/20220920101211.png\",\"url\":\"https:\\/\\/img-home.csdnimg.cn\\/images\\/20220920101215.png\"},{\"id\":4,\"vipUrl\":\"https:\\/\\/img-home.csdnimg.cn\\/images\\/20220920101218.png\",\"url\":\"https:\\/\\/img-home.csdnimg.cn\\/images\\/20220920101220.png\"},{\"id\":5,\"vipUrl\":\"https:\\/\\/img-home.csdnimg.cn\\/images\\/20220920101223.png\",\"url\":\"https:\\/\\/img-home.csdnimg.cn\\/images\\/20220920101226.png\"},{\"id\":6,\"vipUrl\":\"https:\\/\\/img-home.csdnimg.cn\\/images\\/20220922100635.png\",\"url\":\"https:\\/\\/img-home.csdnimg.cn\\/images\\/20220922100639.png\"},{\"id\":7,\"vipUrl\":\"https:\\/\\/img-home.csdnimg.cn\\/images\\/20220922100642.png\",\"url\":\"https:\\/\\/img-home.csdnimg.cn\\/images\\/20220922100644.png\"},{\"id\":8,\"vipUrl\":\"https:\\/\\/img-home.csdnimg.cn\\/images\\/20220922100647.png\",\"url\":\"https:\\/\\/img-home.csdnimg.cn\\/images\\/20220922100649.png\"},{\"id\":9,\"vipUrl\":\"https:\\/\\/img-home.csdnimg.cn\\/images\\/20220922100652.png\",\"url\":\"https:\\/\\/img-home.csdnimg.cn\\/images\\/20220922100655.png\"},{\"id\":10,\"vipUrl\":\"https:\\/\\/img-blog.csdnimg.cn\\/55de67481fde4b04b97ad78f11fe369a.png\",\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/bb2418fb537e4d78b10d8765ccd810c5.png\"},{\"id\":11,\"vipUrl\":\"https:\\/\\/img-blog.csdnimg.cn\\/579c713394584d128104ef1044023954.png\",\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/f420d9fbcf5548079d31b5e809b6d6cd.png\"},{\"id\":12,\"vipUrl\":\"https:\\/\\/img-blog.csdnimg.cn\\/75b7f3155ba642f5a4cc16b7baf44122.png\",\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/a9030f5877be401f8b340b80b0d91e64.png\"},{\"id\":13,\"vipUrl\":\"https:\\/\\/img-blog.csdnimg.cn\\/0903d33cafa54934be3780aa54ae958d.png\",\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/2cd8c8929f5a42fca5da2a0aeb456203.png\"},{\"id\":14,\"vipUrl\":\"https:\\/\\/img-blog.csdnimg.cn\\/949fd7c22884439fbfc3c0e9c3b8dee7.png\",\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/dafbea9bd9eb4f3b962b48dc41657f89.png\"},{\"id\":15,\"vipUrl\":\"https:\\/\\/img-blog.csdnimg.cn\\/4119cfddd71d4e6a8a27a18dbb74d90e.png\",\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/c56310c8b6384d9e85388e4e342ce508.png\"},{\"id\":16,\"vipUrl\":\"https:\\/\\/img-blog.csdnimg.cn\\/121575274da142bcbbbbc2e8243dd411.png\",\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/5013993de06542f881018bb9abe2edf7.png\"},{\"id\":17,\"vipUrl\":\"https:\\/\\/img-blog.csdnimg.cn\\/4d97aa6dd4fe4f09a6bef5bdf8a6abcd.png\",\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/76f23877b6ad4066ad45ce8e31b4b977.png\"},{\"id\":18,\"vipUrl\":\"https:\\/\\/img-blog.csdnimg.cn\\/fdb619daf21b4c829de63b9ebc78859d.png\",\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/a1abe5d27a5441f599adfe662f510243.png\"},{\"id\":19,\"vipUrl\":\"https:\\/\\/img-blog.csdnimg.cn\\/676b7707bb11410f8f56bc0ed2b2345c.png\",\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/7ac5b467fbf24e1d8c2de3f3332c4f54.png\"},{\"id\":20,\"vipUrl\":\"https:\\/\\/img-blog.csdnimg.cn\\/0becb8cc227e4723b765bdd69a20fd4a.png\",\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/fdec85b26091486b9a89d0b8d45c3749.png\"},{\"id\":21,\"vipUrl\":\"https:\\/\\/img-blog.csdnimg.cn\\/1a6c06235ad44941b38c54cbc25a370c.png\",\"url\":\"https:\\/\\/img-blog.csdnimg.cn\\/410a06cda2d44b0c84578f88275caf70.png\"}],\"map\":{\"hot\":\"热门\",\"vip\":\"VIP\"}}";
    
    var canRead = true;
    var blogMoveHomeArticle = false;
    var showPcWindowAd = false;
    var showHeadWord = true;
    var showSearchText = "";
    var linkPage = true;
    var articleSource = 1;
    var articleReport = '{"pid": "blog", "spm":"1001.2101"}';
    var isShowToQuestion = false;
    var baiduSearchChannel = 'pc_relevant'
    var baiduSearchIdentification = '.pc_relevant_3mothn_strategy_recovery'
    var distRequestId = '1671708329938_46453'
    var initRewardObject = {
        giver: "qq_34761779",
        anchor: "wxflamy",
        articleId: "79347689",
        sign: "0a4665182f8482c0ea0b869b19ecd999",
    }
    var isLikeStatus = false;
    var isUnLikeStatus = false;
    var studyLearnWord = "";
    var isCurrentUserVip = false;
    var testNewStyle = "oldStyle"
    var contentViewsHeight = 0;
    var contentViewsCount = 0;
    var contentViewsCountLimit = 5;
    var isShowConcision = true
    var isCookieConcision = false
    var isHasDirectoryModel = false
    var isShowSideModel = false
    var isShowDirectoryModel = true
    function getCookieConcision(sName){
        var allCookie = document.cookie.split("; ");
        for (var i=0; i < allCookie.length; i++){
            var aCrumb = allCookie[i].split("=");
            if (sName == aCrumb[0])
                return aCrumb[1];
        }
        return null;
    }
    if (getCookieConcision('blog_details_concision') && getCookieConcision('blog_details_concision') == 0){
        isCookieConcision = true
        isShowSideModel = true
        isShowDirectoryModel = false
    }
</script>
<div class="main_father clearfix d-flex justify-content-center mainfather-concision" style="height:100%;"> 
    <div class="container clearfix container-concision" id="mainBox">
        <script>
        if(!isCookieConcision){
            $('.main_father').removeClass('mainfather-concision')
            $('.main_father .container').removeClass('container-concision')
        }
        </script>
        <main>
<script type="text/javascript">
    function getQueryString(name) {   
      var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象  
      var r = window.location.search.substr(1).match(reg);  //匹配目标参数
      if( r != null ) return decodeURIComponent( r[2] ); return '';   
    }
    function stripscript(s){ 
      var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~！@#￥……&*（）——|{}【】‘；：”“'。，、？%]") 
      var rs = ""; 
      for (var i = 0; i < s.length; i++) { 
        rs = rs+s.substr(i, 1).replace(pattern, ''); 
      } 
      return rs; 
    }
    var blogHotWords = stripscript(getQueryString('utm_term')).length > 1 ? stripscript(getQueryString('utm_term')) : ''
</script>
<div class="blog-content-box">
        <div class="article-header-box">
        <div class="article-header">
            <div class="article-title-box">
                <h1 class="title-article" id="articleContentId">rviz中的标记（markers）和交互标记（interactive markers）</h1>
            </div>
            <div class="article-info-box">
                <div class="article-bar-top">
                    <img class="article-type-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/original.png" alt="">
                    <div class="bar-content">
                    <a class="follow-nickName " href="https://blog.csdn.net/wxflamy" target="_blank" rel="noopener" title="我才睡醒">我才睡醒</a>
                    <img class="article-time-img article-heard-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/newCurrentTime2.png" alt="">
                    <span class="time">于&nbsp;2018-02-23 08:18:36&nbsp;发布</span>
                    <img class="article-read-img article-heard-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/articleReadEyes2.png" alt="">
                    <span class="read-count">4096</span>
                    <a id="blog_detail_zk_collection" class="un-collection" data-report-click='{"mod":"popu_823","spm":"1001.2101.3001.4232","ab":"new"}'>
                        <img class="article-collect-img article-heard-img un-collect-status isdefault" style="display:inline-block" src="https://csdnimg.cn/release/blogv2/dist/pc/img/tobarCollect2.png" alt="">
                        <img class="article-collect-img article-heard-img collect-status isactive" style="display:none" src="https://csdnimg.cn/release/blogv2/dist/pc/img/tobarCollectionActive2.png" alt="">
                        <span class="name">收藏</span>
                        <span class="get-collection">
                            9
                        </span>
                    </a>
                    </div>
                </div>
                <div class="blog-tags-box">
                    <div class="tags-box artic-tag-box">
                            <span class="label">分类专栏：</span>
                                <a class="tag-link" href="https://blog.csdn.net/wxflamy/category_7410765.html" target="_blank" rel="noopener">ROS</a>
                            <span class="label">文章标签：</span>
                                <a data-report-click='{"mod":"popu_626","spm":"1001.2101.3001.4223","strategy":"rviz","ab":"new","extra":"{\"searchword\":\"rviz\"}"}' class="tag-link" href="https://so.csdn.net/so/search/s.do?q=rviz&amp;t=blog&amp;o=vip&amp;s=&amp;l=&amp;f=&amp;viparticle=" target="_blank" rel="noopener">rviz</a>
                                <a data-report-click='{"mod":"popu_626","spm":"1001.2101.3001.4223","strategy":"marker","ab":"new","extra":"{\"searchword\":\"marker\"}"}' class="tag-link" href="https://so.csdn.net/so/search/s.do?q=marker&amp;t=blog&amp;o=vip&amp;s=&amp;l=&amp;f=&amp;viparticle=" target="_blank" rel="noopener">marker</a>
                                <a data-report-click='{"mod":"popu_626","spm":"1001.2101.3001.4223","strategy":"interactive","ab":"new","extra":"{\"searchword\":\"interactive\"}"}' class="tag-link" href="https://so.csdn.net/so/search/s.do?q=interactive&amp;t=blog&amp;o=vip&amp;s=&amp;l=&amp;f=&amp;viparticle=" target="_blank" rel="noopener">interactive</a>
                    </div>
                </div>
                <div class="slide-content-box">
                    <div class="article-copyright">
                        <div class="creativecommons">
                            版权声明：本文为博主原创文章，遵循<a href="http://creativecommons.org/licenses/by-sa/4.0/" target="_blank" rel="noopener"> CC 4.0 BY-SA </a>版权协议，转载请附上原文出处链接和本声明。
                        </div>
                        <div class="article-source-link">
                            本文链接：<a href="https://blog.csdn.net/wxflamy/article/details/79347689" target="_blank">https://blog.csdn.net/wxflamy/article/details/79347689</a>
                        </div>
                    </div>
                </div>
                <div class="operating">
                    <a class="href-article-edit slide-toggle">版权</a>
                </div>
            </div>
        </div>
    </div>
    <div id="blogHuaweiyunAdvert"></div>
        <div id="blogColumnPayAdvert">
            <div class="column-group">
                <div class="column-group-item column-group0 column-group-item-one">
                    <div class="item-l">
                        <a class="item-target" href="https://blog.csdn.net/wxflamy/category_7410765.html" target="_blank" title="ROS"
                        data-report-view='{"spm":"1001.2101.3001.6332"}'
                        data-report-click='{"spm":"1001.2101.3001.6332"}'>
                            <img class="item-target" src="https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt="">
                            <span class="title item-target">
                                <span>
                                <span class="tit">ROS</span>
                                    <span class="dec">专栏收录该内容</span>
                                </span>
                            </span>
                        </a>
                    </div>
                    <div class="item-m">
                        <span>26 篇文章</span>
                        <span>16 订阅</span>
                    </div>
                    <div class="item-r">
                            <a class="item-target article-column-bt articleColumnFreeBt" data-id="7410765">订阅专栏</a>
                    </div>
                </div>
            </div>
        </div>
    <article class="baidu_pl">
        <div id="article_content" class="article_content clearfix">
        <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/kdoc_html_views-23cf357b0c.css">
        <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/ck_htmledit_views-6e43165c0a.css">
                <div id="content_views" class="markdown_views prism-atom-one-dark">
                    <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
                        <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
                    </svg>
                    <p>通过发布合适的话题可以在rviz的视图中显示合适的话题。可以在example_rviz_marker中查看例子example_rviz_marker.cpp。</p> 
<pre class="prettyprint"><code class=" hljs avrasm"><span class="hljs-preprocessor">#include &lt;ros/ros.h&gt; </span>
<span class="hljs-preprocessor">#include &lt;visualization_msgs/Marker.h&gt; // need this for publishing markers</span>
<span class="hljs-preprocessor">#include &lt;geometry_msgs/Point.h&gt; //data type used for markers</span>
<span class="hljs-preprocessor">#include &lt;string.h&gt;</span>
<span class="hljs-preprocessor">#include &lt;stdio.h&gt;  </span>
<span class="hljs-preprocessor">#include &lt;example_rviz_marker/SimpleFloatSrvMsg.h&gt; //自定义的消息类型</span>
using namespace <span class="hljs-keyword">std</span><span class="hljs-comment">;</span>

//<span class="hljs-keyword">set</span> these two values by service callback, make available to <span class="hljs-string">&#34;main&#34;</span>
double g_z_height &#61; <span class="hljs-number">0.0</span><span class="hljs-comment">;</span>
bool g_trigger &#61; true<span class="hljs-comment">;</span>

//a service to prompt a new display computation.
// E<span class="hljs-preprocessor">.g</span>., to construct a plane at height <span class="hljs-built_in">z</span>&#61;<span class="hljs-number">1.0</span>, trigger with: 
// rosservice <span class="hljs-keyword">call</span> rviz_marker_svc <span class="hljs-number">1.0</span>

bool displaySvcCB(example_rviz_marker::SimpleFloatSrvMsgRequest&amp; request,
    example_rviz_marker::SimpleFloatSrvMsgResponse&amp; response) {
    g_z_height &#61; request<span class="hljs-preprocessor">.request</span>_float32<span class="hljs-comment">;</span>
    ROS_INFO(<span class="hljs-string">&#34;example_rviz_marker: received request for height %f&#34;</span>, g_z_height)<span class="hljs-comment">;</span>
    g_trigger &#61; true<span class="hljs-comment">; // inform &#34;main&#34; a new computation is desired</span>
    response<span class="hljs-preprocessor">.resp</span>&#61;true<span class="hljs-comment">;</span>
    return true<span class="hljs-comment">;</span>
}

void init_marker_vals(visualization_msgs::Marker &amp;marker) {
    marker<span class="hljs-preprocessor">.header</span><span class="hljs-preprocessor">.frame</span>_id &#61; <span class="hljs-string">&#34;/world&#34;</span><span class="hljs-comment">; // reference frame for marker coords</span>
    marker<span class="hljs-preprocessor">.header</span><span class="hljs-preprocessor">.stamp</span> &#61; ros::Time()<span class="hljs-comment">;</span>
    marker<span class="hljs-preprocessor">.ns</span> &#61; <span class="hljs-string">&#34;my_namespace&#34;</span><span class="hljs-comment">;</span>
    marker<span class="hljs-preprocessor">.id</span> &#61; <span class="hljs-number">0</span><span class="hljs-comment">;</span>
    // use SPHERE if you only want a single marker
    // use SPHERE_LIST for a group of markers
    marker<span class="hljs-preprocessor">.type</span> &#61; visualization_msgs::Marker::SPHERE_LIST<span class="hljs-comment">; //SPHERE;</span>
    marker<span class="hljs-preprocessor">.action</span> &#61; visualization_msgs::Marker::<span class="hljs-keyword">ADD</span><span class="hljs-comment">;</span>
    // if just using a single marker, specify the coordinates here, like this:

    //marker<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.position</span><span class="hljs-preprocessor">.x</span> &#61; <span class="hljs-number">0.4</span><span class="hljs-comment">;  </span>
    //marker<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.position</span><span class="hljs-preprocessor">.y</span> &#61; -<span class="hljs-number">0.4</span><span class="hljs-comment">;</span>
    //marker<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.position</span><span class="hljs-preprocessor">.z</span> &#61; <span class="hljs-number">0</span><span class="hljs-comment">;</span>
    //ROS_INFO(<span class="hljs-string">&#34;x,y,z &#61; %f %f, %f&#34;</span>,marker<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.position</span><span class="hljs-preprocessor">.x</span>,marker<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.position</span><span class="hljs-preprocessor">.y</span>,                       
    //        marker<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.position</span><span class="hljs-preprocessor">.z</span>)<span class="hljs-comment">;    </span>
    // otherwise, for a list of markers, put their coordinates <span class="hljs-keyword">in</span> the <span class="hljs-string">&#34;points&#34;</span> array, as below

    //whether a single marker <span class="hljs-keyword">or</span> list of markers, need to specify marker properties
    // these will all be the same for SPHERE_LIST
    marker<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.orientation</span><span class="hljs-preprocessor">.x</span> &#61; <span class="hljs-number">0.0</span><span class="hljs-comment">;</span>
    marker<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.orientation</span><span class="hljs-preprocessor">.y</span> &#61; <span class="hljs-number">0.0</span><span class="hljs-comment">;</span>
    marker<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.orientation</span><span class="hljs-preprocessor">.z</span> &#61; <span class="hljs-number">0.0</span><span class="hljs-comment">;</span>
    marker<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.orientation</span><span class="hljs-preprocessor">.w</span> &#61; <span class="hljs-number">1.0</span><span class="hljs-comment">;</span>
    marker<span class="hljs-preprocessor">.scale</span><span class="hljs-preprocessor">.x</span> &#61; <span class="hljs-number">0.02</span><span class="hljs-comment">;</span>
    marker<span class="hljs-preprocessor">.scale</span><span class="hljs-preprocessor">.y</span> &#61; <span class="hljs-number">0.02</span><span class="hljs-comment">;</span>
    marker<span class="hljs-preprocessor">.scale</span><span class="hljs-preprocessor">.z</span> &#61; <span class="hljs-number">0.02</span><span class="hljs-comment">;</span>
    marker<span class="hljs-preprocessor">.color</span><span class="hljs-preprocessor">.a</span> &#61; <span class="hljs-number">1.0</span><span class="hljs-comment">;</span>
    marker<span class="hljs-preprocessor">.color</span><span class="hljs-preprocessor">.r</span> &#61; <span class="hljs-number">1.0</span><span class="hljs-comment">;</span>
    marker<span class="hljs-preprocessor">.color</span><span class="hljs-preprocessor">.g</span> &#61; <span class="hljs-number">0.0</span><span class="hljs-comment">;</span>
    marker<span class="hljs-preprocessor">.color</span><span class="hljs-preprocessor">.b</span> &#61; <span class="hljs-number">0.0</span><span class="hljs-comment">;     </span>
}

int main(int argc, char **argv) {
    ros::init(argc, argv, <span class="hljs-string">&#34;example_rviz_marker&#34;</span>)<span class="hljs-comment">;</span>
    ros::NodeHandle nh<span class="hljs-comment">;</span>
    ros::Publisher vis_pub &#61; nh<span class="hljs-preprocessor">.advertise</span>&lt;visualization_msgs::Marker&gt;(<span class="hljs-string">&#34;example_marker_topic&#34;</span>, <span class="hljs-number">0</span>)<span class="hljs-comment">;</span>
    visualization_msgs::Marker marker<span class="hljs-comment">; // 实例化一个标记对象</span>
    geometry_msgs::Point point<span class="hljs-comment">; // 点云用来表示标记点的位置</span>

    //<span class="hljs-keyword">set</span> up a service to compute marker locations on request设置一个服务计算所请求的标记点的位置
    ros::ServiceServer service &#61; nh<span class="hljs-preprocessor">.advertiseService</span>(<span class="hljs-string">&#34;rviz_marker_svc&#34;</span>, displaySvcCB)<span class="hljs-comment">;</span>

    init_marker_vals(marker)<span class="hljs-comment">;//调用预定义函数&#xff0c;初始化标记点</span>

    double z_des<span class="hljs-comment">;</span>

    // build a wall of markers<span class="hljs-comment">; set range and resolution建立标记墙&#xff0c;设置范围和分辨率</span>
    double x_min &#61; -<span class="hljs-number">1.0</span><span class="hljs-comment">;</span>
    double x_max &#61; <span class="hljs-number">1.0</span><span class="hljs-comment">;</span>
    double y_min &#61; -<span class="hljs-number">1.0</span><span class="hljs-comment">;</span>
    double y_max &#61; <span class="hljs-number">1.0</span><span class="hljs-comment">;</span>
    double dx_des &#61; <span class="hljs-number">0.1</span><span class="hljs-comment">;</span>
    double dy_des &#61; <span class="hljs-number">0.1</span><span class="hljs-comment">;</span>

    while (ros::ok()) {
        if (g_trigger) {  // did service get request for a new computation?
            g_trigger &#61; false<span class="hljs-comment">; //reset the trigger from service</span>
            z_des &#61; g_z_height<span class="hljs-comment">; //use z-value from service callback</span>
            ROS_INFO(<span class="hljs-string">&#34;constructing plane of markers at height %f&#34;</span>,z_des)<span class="hljs-comment">;</span>
            marker<span class="hljs-preprocessor">.header</span><span class="hljs-preprocessor">.stamp</span> &#61; ros::Time()<span class="hljs-comment">;</span>
            marker<span class="hljs-preprocessor">.points</span><span class="hljs-preprocessor">.clear</span>()<span class="hljs-comment">; // clear out this vector</span>

            for (double x_des &#61; x_min<span class="hljs-comment">; x_des &lt; x_max; x_des &#43;&#61; dx_des) {<!-- --></span>
                for (double y_des &#61; y_min<span class="hljs-comment">; y_des &lt; y_max; y_des &#43;&#61; dy_des) {<!-- --></span>
                        point<span class="hljs-preprocessor">.x</span> &#61; x_des<span class="hljs-comment">;</span>
                        point<span class="hljs-preprocessor">.y</span> &#61; y_des<span class="hljs-comment">;</span>
                        point<span class="hljs-preprocessor">.z</span> &#61; z_des<span class="hljs-comment">;</span>
                        marker<span class="hljs-preprocessor">.points</span><span class="hljs-preprocessor">.push</span>_back(point)<span class="hljs-comment">;</span>
                }
            }
        }
     ros::Duration(<span class="hljs-number">0.1</span>)<span class="hljs-preprocessor">.sleep</span>()<span class="hljs-comment">;</span>
    //ROS_INFO(<span class="hljs-string">&#34;publishing...&#34;</span>)<span class="hljs-comment">;</span>
    vis_pub<span class="hljs-preprocessor">.publish</span>(marker)<span class="hljs-comment">;</span>
    ros::spinOnce()<span class="hljs-comment">;       </span>
    }
    return <span class="hljs-number">0</span><span class="hljs-comment">;</span>
}</code></pre> 
<p>节点的源代码定义了一个服务rviz_marker_svc。服务使用自定义的消息SimpleFloatSrvMsg&#xff0c;期望客户端提供一个单浮点数。服务可以通过以下命令手动调用&#xff1a;</p> 
<pre class="prettyprint"><code class=" hljs sql">rosservice <span class="hljs-operator"><span class="hljs-keyword">call</span> rviz_marker_svc <span class="hljs-number">1.0</span></span></code></pre> 
<p>当服务被调用的时候&#xff0c;example_rviz_maker节点将在高度为1.0的位置计算一系列的平面点。 <br /> 运行这个例子&#xff0c;首先启动roscore&#xff0c;然后输入</p> 
<pre class="prettyprint"><code class=" hljs ">rosrun example_rviz_marker example_rv_marker </code></pre> 
<p>启动rviz</p> 
<pre class="prettyprint"><code class=" hljs ">rosrun rviz rviz</code></pre> 
<p>选择world为固定坐标系&#xff0c;添加Marker组件&#xff0c;选择Marker Topic为/example_marker_topic&#xff0c;可以观察到平面标记点信息 <br /> <img src="https://img-blog.csdn.net/20180222160505841?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3hmbGFteQ&#61;&#61;/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA&#61;&#61;/dissolve/70" alt="这里写图片描述" title="" /> <br /> 调用服务</p> 
<pre class="prettyprint"><code class=" hljs sql">rosservice <span class="hljs-operator"><span class="hljs-keyword">call</span> rviz_marker_svc <span class="hljs-number">1.0</span></span></code></pre> 
<p>标记点向上平移了一个单位 <br /> <img src="https://img-blog.csdn.net/20180222160637193?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3hmbGFteQ&#61;&#61;/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA&#61;&#61;/dissolve/70" alt="这里写图片描述" title="" /></p> 
<hr /> 
<h1 id="三维显示示例">三维显示示例</h1> 
<p>先上triad_display.cpp代码</p> 
<pre class="prettyprint"><code class="language-C&#43;&#43; hljs avrasm">// triad_display<span class="hljs-preprocessor">.cpp</span>
// Wyatt Newman, <span class="hljs-number">8</span>/<span class="hljs-number">16</span>
// node to assist display of triads (axes) <span class="hljs-keyword">in</span> rviz
// this node subscribes to topic <span class="hljs-string">&#34;triad_display_pose&#34;</span>, from which it receives geometry_msgs/PoseStamped poses
// it uses this info to populate <span class="hljs-keyword">and</span> publish axes, using whatever frame_id is <span class="hljs-keyword">in</span> the pose header
// To see the result, <span class="hljs-keyword">add</span> a <span class="hljs-string">&#34;Marker&#34;</span> display <span class="hljs-keyword">in</span> rviz <span class="hljs-keyword">and</span> subscribe to the marker topic <span class="hljs-string">&#34;/triad_display&#34;</span>
// Can test this display node with the test node: <span class="hljs-string">&#34;triad_display_test_node&#34;</span>, which generates moving poses
// corresponding to a marker origin spiraling up <span class="hljs-keyword">in</span> <span class="hljs-built_in">z</span>

<span class="hljs-preprocessor">#include &lt;ros/ros.h&gt;</span>
<span class="hljs-preprocessor">#include &lt;visualization_msgs/Marker.h&gt;</span>
//<span class="hljs-preprocessor">#include &lt;visualization_msgs/InteractiveMarkerFeedback.h&gt;</span>
<span class="hljs-preprocessor">#include &lt;geometry_msgs/Point.h&gt;</span>
<span class="hljs-preprocessor">#include &lt;geometry_msgs/PointStamped.h&gt;</span>
<span class="hljs-preprocessor">#include &lt;geometry_msgs/PoseStamped.h&gt;</span>
<span class="hljs-preprocessor">#include &lt;math.h&gt;</span>
<span class="hljs-preprocessor">#include &lt;Eigen/Eigen&gt;  </span>
<span class="hljs-preprocessor">#include &lt;Eigen/Core&gt;</span>
<span class="hljs-preprocessor">#include &lt;Eigen/Geometry&gt;</span>
<span class="hljs-preprocessor">#include &lt;Eigen/Dense&gt;</span>
<span class="hljs-preprocessor">#include &lt;tf_conversions/tf_eigen.h&gt;</span>

//some globals...
<span class="hljs-label">geometry_msgs:</span>:Point vertex1<span class="hljs-comment">;</span>
<span class="hljs-label">geometry_msgs:</span>:PoseStamped g_stamped_pose<span class="hljs-comment">;</span>
<span class="hljs-label">Eigen:</span>:Affine3d g_affine_marker_pose<span class="hljs-comment">;</span>

// create arrow markers<span class="hljs-comment">; do this 3 times to create a triad (frame)</span>
<span class="hljs-label">visualization_msgs:</span>:Marker arrow_marker_x<span class="hljs-comment">; //this one for the x axis</span>
<span class="hljs-label">visualization_msgs:</span>:Marker arrow_marker_y<span class="hljs-comment">; //this one for the y axis</span>
<span class="hljs-label">visualization_msgs:</span>:Marker arrow_marker_z<span class="hljs-comment">; //this one for the y axis</span>

//udpdate_arrows() <span class="hljs-keyword">set</span> the frame <span class="hljs-keyword">and</span> 

void update_arrows() {
    geometry_msgs::Point origin, arrow_x_tip, arrow_y_tip, arrow_z_tip<span class="hljs-comment">;</span>
    Eigen::Matrix3d R<span class="hljs-comment">;</span>
    Eigen::Quaterniond quat<span class="hljs-comment">;</span>
    quat<span class="hljs-preprocessor">.x</span>() &#61; g_stamped_pose<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.orientation</span><span class="hljs-preprocessor">.x</span><span class="hljs-comment">;</span>
    quat<span class="hljs-preprocessor">.y</span>() &#61; g_stamped_pose<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.orientation</span><span class="hljs-preprocessor">.y</span><span class="hljs-comment">;</span>
    quat<span class="hljs-preprocessor">.z</span>() &#61; g_stamped_pose<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.orientation</span><span class="hljs-preprocessor">.z</span><span class="hljs-comment">;</span>
    quat<span class="hljs-preprocessor">.w</span>() &#61; g_stamped_pose<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.orientation</span><span class="hljs-preprocessor">.w</span><span class="hljs-comment">;</span>
    R &#61; quat<span class="hljs-preprocessor">.toRotationMatrix</span>()<span class="hljs-comment">;</span>
    Eigen::Vector3d x_vec, y_vec, z_vec<span class="hljs-comment">;</span>
    double veclen &#61; <span class="hljs-number">0.2</span><span class="hljs-comment">; //make the arrows this long</span>
    x_vec &#61; R<span class="hljs-preprocessor">.col</span>(<span class="hljs-number">0</span>) * veclen<span class="hljs-comment">;</span>
    y_vec &#61; R<span class="hljs-preprocessor">.col</span>(<span class="hljs-number">1</span>) * veclen<span class="hljs-comment">;</span>
    z_vec &#61; R<span class="hljs-preprocessor">.col</span>(<span class="hljs-number">2</span>) * veclen<span class="hljs-comment">;</span>

    //update the arrow markers w/ new pose:
    origin &#61; g_stamped_pose<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.position</span><span class="hljs-comment">;</span>
    arrow_x_tip &#61; origin<span class="hljs-comment">;</span>
    arrow_x_tip<span class="hljs-preprocessor">.x</span> &#43;&#61; x_vec(<span class="hljs-number">0</span>)<span class="hljs-comment">;</span>
    arrow_x_tip<span class="hljs-preprocessor">.y</span> &#43;&#61; x_vec(<span class="hljs-number">1</span>)<span class="hljs-comment">;</span>
    arrow_x_tip<span class="hljs-preprocessor">.z</span> &#43;&#61; x_vec(<span class="hljs-number">2</span>)<span class="hljs-comment">;</span>
    arrow_marker_x<span class="hljs-preprocessor">.points</span><span class="hljs-preprocessor">.clear</span>()<span class="hljs-comment">;</span>
    arrow_marker_x<span class="hljs-preprocessor">.points</span><span class="hljs-preprocessor">.push</span>_back(origin)<span class="hljs-comment">;</span>
    arrow_marker_x<span class="hljs-preprocessor">.points</span><span class="hljs-preprocessor">.push</span>_back(arrow_x_tip)<span class="hljs-comment">;</span>
    arrow_marker_x<span class="hljs-preprocessor">.header</span> &#61; g_stamped_pose<span class="hljs-preprocessor">.header</span><span class="hljs-comment">;</span>

    arrow_y_tip &#61; origin<span class="hljs-comment">;</span>
    arrow_y_tip<span class="hljs-preprocessor">.x</span> &#43;&#61; y_vec(<span class="hljs-number">0</span>)<span class="hljs-comment">;</span>
    arrow_y_tip<span class="hljs-preprocessor">.y</span> &#43;&#61; y_vec(<span class="hljs-number">1</span>)<span class="hljs-comment">;</span>
    arrow_y_tip<span class="hljs-preprocessor">.z</span> &#43;&#61; y_vec(<span class="hljs-number">2</span>)<span class="hljs-comment">;</span>

    arrow_marker_y<span class="hljs-preprocessor">.points</span><span class="hljs-preprocessor">.clear</span>()<span class="hljs-comment">;</span>
    arrow_marker_y<span class="hljs-preprocessor">.points</span><span class="hljs-preprocessor">.push</span>_back(origin)<span class="hljs-comment">;</span>
    arrow_marker_y<span class="hljs-preprocessor">.points</span><span class="hljs-preprocessor">.push</span>_back(arrow_y_tip)<span class="hljs-comment">;</span>
    arrow_marker_y<span class="hljs-preprocessor">.header</span> &#61; g_stamped_pose<span class="hljs-preprocessor">.header</span><span class="hljs-comment">;</span>

    arrow_z_tip &#61; origin<span class="hljs-comment">;</span>
    arrow_z_tip<span class="hljs-preprocessor">.x</span> &#43;&#61; z_vec(<span class="hljs-number">0</span>)<span class="hljs-comment">;</span>
    arrow_z_tip<span class="hljs-preprocessor">.y</span> &#43;&#61; z_vec(<span class="hljs-number">1</span>)<span class="hljs-comment">;</span>
    arrow_z_tip<span class="hljs-preprocessor">.z</span> &#43;&#61; z_vec(<span class="hljs-number">2</span>)<span class="hljs-comment">;</span>

    arrow_marker_z<span class="hljs-preprocessor">.points</span><span class="hljs-preprocessor">.clear</span>()<span class="hljs-comment">;</span>
    arrow_marker_z<span class="hljs-preprocessor">.points</span><span class="hljs-preprocessor">.push</span>_back(origin)<span class="hljs-comment">;</span>
    arrow_marker_z<span class="hljs-preprocessor">.points</span><span class="hljs-preprocessor">.push</span>_back(arrow_z_tip)<span class="hljs-comment">;</span>
    arrow_marker_z<span class="hljs-preprocessor">.header</span> &#61; g_stamped_pose<span class="hljs-preprocessor">.header</span><span class="hljs-comment">;</span>
}

//init persistent params of markers, then variable coords    

void init_markers() {
    //initialize stamped pose for at a legal (if boring) pose
    g_stamped_pose<span class="hljs-preprocessor">.header</span><span class="hljs-preprocessor">.stamp</span> &#61; ros::Time::now()<span class="hljs-comment">;</span>
    g_stamped_pose<span class="hljs-preprocessor">.header</span><span class="hljs-preprocessor">.frame</span>_id &#61; <span class="hljs-string">&#34;world&#34;</span><span class="hljs-comment">;</span>
    g_stamped_pose<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.position</span><span class="hljs-preprocessor">.x</span> &#61; <span class="hljs-number">0</span><span class="hljs-comment">;</span>
    g_stamped_pose<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.position</span><span class="hljs-preprocessor">.y</span> &#61; <span class="hljs-number">0</span><span class="hljs-comment">;</span>
    g_stamped_pose<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.position</span><span class="hljs-preprocessor">.z</span> &#61; <span class="hljs-number">0</span><span class="hljs-comment">;</span>
    g_stamped_pose<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.orientation</span><span class="hljs-preprocessor">.x</span> &#61; <span class="hljs-number">0</span><span class="hljs-comment">;</span>
    g_stamped_pose<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.orientation</span><span class="hljs-preprocessor">.y</span> &#61; <span class="hljs-number">0</span><span class="hljs-comment">;</span>
    g_stamped_pose<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.orientation</span><span class="hljs-preprocessor">.z</span> &#61; <span class="hljs-number">0</span><span class="hljs-comment">;</span>
    g_stamped_pose<span class="hljs-preprocessor">.pose</span><span class="hljs-preprocessor">.orientation</span><span class="hljs-preprocessor">.w</span> &#61; <span class="hljs-number">1</span><span class="hljs-comment">;</span>

    //the following parameters only need to get <span class="hljs-keyword">set</span> once
    arrow_marker_x<span class="hljs-preprocessor">.type</span> &#61; visualization_msgs::Marker::ARROW<span class="hljs-comment">;</span>
    arrow_marker_x<span class="hljs-preprocessor">.action</span> &#61; visualization_msgs::Marker::<span class="hljs-keyword">ADD</span><span class="hljs-comment">; //create or modify marker</span>
    arrow_marker_x<span class="hljs-preprocessor">.ns</span> &#61; <span class="hljs-string">&#34;triad_namespace&#34;</span><span class="hljs-comment">;</span>
    arrow_marker_x<span class="hljs-preprocessor">.lifetime</span> &#61; ros::Duration()<span class="hljs-comment">; //never delete</span>
    // make the arrow thin
    arrow_marker_x<span class="hljs-preprocessor">.scale</span><span class="hljs-preprocessor">.x</span> &#61; <span class="hljs-number">0.01</span><span class="hljs-comment">;</span>
    arrow_marker_x<span class="hljs-preprocessor">.scale</span><span class="hljs-preprocessor">.y</span> &#61; <span class="hljs-number">0.01</span><span class="hljs-comment">;</span>
    arrow_marker_x<span class="hljs-preprocessor">.scale</span><span class="hljs-preprocessor">.z</span> &#61; <span class="hljs-number">0.01</span><span class="hljs-comment">;</span>
    arrow_marker_x<span class="hljs-preprocessor">.color</span><span class="hljs-preprocessor">.r</span> &#61; <span class="hljs-number">1.0</span><span class="hljs-comment">; // red, for the x axis</span>
    arrow_marker_x<span class="hljs-preprocessor">.color</span><span class="hljs-preprocessor">.g</span> &#61; <span class="hljs-number">0.0</span><span class="hljs-comment">;</span>
    arrow_marker_x<span class="hljs-preprocessor">.color</span><span class="hljs-preprocessor">.b</span> &#61; <span class="hljs-number">0.0</span><span class="hljs-comment">;</span>
    arrow_marker_x<span class="hljs-preprocessor">.color</span><span class="hljs-preprocessor">.a</span> &#61; <span class="hljs-number">1.0</span><span class="hljs-comment">;</span>
    arrow_marker_x<span class="hljs-preprocessor">.id</span> &#61; <span class="hljs-number">0</span><span class="hljs-comment">;</span>
    arrow_marker_x<span class="hljs-preprocessor">.header</span> &#61; g_stamped_pose<span class="hljs-preprocessor">.header</span><span class="hljs-comment">;</span>

    //<span class="hljs-built_in">y</span> <span class="hljs-keyword">and</span> <span class="hljs-built_in">z</span> arrow params are the same, except for colors
    arrow_marker_y &#61; arrow_marker_x<span class="hljs-comment">;</span>
    arrow_marker_y<span class="hljs-preprocessor">.color</span><span class="hljs-preprocessor">.r</span> &#61; <span class="hljs-number">0.0</span><span class="hljs-comment">;</span>
    arrow_marker_y<span class="hljs-preprocessor">.color</span><span class="hljs-preprocessor">.g</span> &#61; <span class="hljs-number">1.0</span><span class="hljs-comment">; //green for y axis</span>
    arrow_marker_y<span class="hljs-preprocessor">.color</span><span class="hljs-preprocessor">.b</span> &#61; <span class="hljs-number">0.0</span><span class="hljs-comment">;</span>
    arrow_marker_y<span class="hljs-preprocessor">.color</span><span class="hljs-preprocessor">.a</span> &#61; <span class="hljs-number">1.0</span><span class="hljs-comment">;</span>
    arrow_marker_y<span class="hljs-preprocessor">.id</span> &#61; <span class="hljs-number">1</span><span class="hljs-comment">;</span>

    arrow_marker_z &#61; arrow_marker_x<span class="hljs-comment">;</span>
    arrow_marker_z<span class="hljs-preprocessor">.id</span> &#61; <span class="hljs-number">2</span><span class="hljs-comment">;</span>
    arrow_marker_z<span class="hljs-preprocessor">.color</span><span class="hljs-preprocessor">.r</span> &#61; <span class="hljs-number">0.0</span><span class="hljs-comment">;</span>
    arrow_marker_z<span class="hljs-preprocessor">.color</span><span class="hljs-preprocessor">.g</span> &#61; <span class="hljs-number">0.0</span><span class="hljs-comment">;</span>
    arrow_marker_z<span class="hljs-preprocessor">.color</span><span class="hljs-preprocessor">.b</span> &#61; <span class="hljs-number">1.0</span><span class="hljs-comment">; //blue for z axis</span>
    arrow_marker_z<span class="hljs-preprocessor">.color</span><span class="hljs-preprocessor">.a</span> &#61; <span class="hljs-number">1.0</span><span class="hljs-comment">;</span>
    //<span class="hljs-keyword">set</span> the poses of the arrows based on g_stamped_pose
    update_arrows()<span class="hljs-comment">;</span>
}

void poseCB(const geometry_msgs::PoseStamped &amp;pose_msg) {
    ROS_DEBUG(<span class="hljs-string">&#34;got pose message&#34;</span>)<span class="hljs-comment">;</span>
    //ROS_INFO(<span class="hljs-string">&#34;got pose message&#34;</span>)<span class="hljs-comment">;</span>
    g_stamped_pose<span class="hljs-preprocessor">.header</span> &#61; pose_msg<span class="hljs-preprocessor">.header</span><span class="hljs-comment">;</span>
    g_stamped_pose<span class="hljs-preprocessor">.pose</span> &#61; pose_msg<span class="hljs-preprocessor">.pose</span><span class="hljs-comment">;</span>

}

int main(int argc, char** argv) {
    ros::init(argc, argv, <span class="hljs-string">&#34;triad_display&#34;</span>)<span class="hljs-comment">; // this will be the node name;</span>
    ros::NodeHandle nh<span class="hljs-comment">;</span>

    // subscribe to stamped-pose publications
    ros::Subscriber pose_sub &#61; nh<span class="hljs-preprocessor">.subscribe</span>(<span class="hljs-string">&#34;triad_display_pose&#34;</span>, <span class="hljs-number">1</span>, poseCB)<span class="hljs-comment">;</span>
    ros::Publisher vis_pub &#61; nh<span class="hljs-preprocessor">.advertise</span>&lt;visualization_msgs::Marker&gt;(<span class="hljs-string">&#34;triad_display&#34;</span>, <span class="hljs-number">1</span>)<span class="hljs-comment">;</span>
    init_markers()<span class="hljs-comment">;</span>

    ros::Rate timer(<span class="hljs-number">20</span>)<span class="hljs-comment">; //timer to run at 20 Hz</span>

    while (ros::ok()) {
        update_arrows()<span class="hljs-comment">;</span>
        vis_pub<span class="hljs-preprocessor">.publish</span>(arrow_marker_x)<span class="hljs-comment">; //publish the marker</span>
        ros::Duration(<span class="hljs-number">0.01</span>)<span class="hljs-preprocessor">.sleep</span>()<span class="hljs-comment">;</span>
        vis_pub<span class="hljs-preprocessor">.publish</span>(arrow_marker_y)<span class="hljs-comment">; //publish the marker</span>
        ros::Duration(<span class="hljs-number">0.01</span>)<span class="hljs-preprocessor">.sleep</span>()<span class="hljs-comment">;</span>
        vis_pub<span class="hljs-preprocessor">.publish</span>(arrow_marker_z)<span class="hljs-comment">; //publish the marker</span>
        ros::spinOnce()<span class="hljs-comment">; //let callbacks perform an update</span>
        timer<span class="hljs-preprocessor">.sleep</span>()<span class="hljs-comment">;</span>
    }
}</code></pre> 
<p>依次运行以下命令&#xff1a;</p> 
<pre class="prettyprint"><code class=" hljs ">roscore</code></pre> 
<pre class="prettyprint"><code class=" hljs ">rosrun example_rviz_marker triad _display</code></pre> 
<pre class="prettyprint"><code class=" hljs ">rosrun rviz rviz</code></pre> 
<pre class="prettyprint"><code class=" hljs ">rosrun example_rviz_marker triad_display_test_node</code></pre> 
<p>可以看到一个直角坐标标记螺旋上升。</p> 
<h1 id="rviz中的交互式标记interactive-marker">rviz中的交互式标记&#xff08;interactive marker&#xff09;</h1> 
<p>交互式标记的例子可以在example_interactive_marker包中找到。以下是示例代码</p> 
<pre class="prettyprint"><code class="language-C&#43;&#43; hljs lasso"><span class="hljs-comment">// IM_6DOF_example.cpp</span>
<span class="hljs-comment">// Wyatt Newman, based on ROS tutorial 4.2 on Interactive Markers</span>
<span class="hljs-variable">#include</span> <span class="hljs-subst">&lt;</span>ros/ros<span class="hljs-built_in">.</span>h<span class="hljs-subst">&gt;</span>
<span class="hljs-variable">#include</span> <span class="hljs-subst">&lt;</span>iostream<span class="hljs-subst">&gt;</span>
<span class="hljs-variable">#include</span> <span class="hljs-subst">&lt;</span>interactive_markers/interactive_marker_server<span class="hljs-built_in">.</span>h<span class="hljs-subst">&gt;</span>
<span class="hljs-variable">#include</span> <span class="hljs-subst">&lt;</span>geometry_msgs/Point<span class="hljs-built_in">.</span>h<span class="hljs-subst">&gt;</span>
<span class="hljs-variable">#include</span> <span class="hljs-subst">&lt;</span>example_interactive_marker/ImNodeSvcMsg<span class="hljs-built_in">.</span>h<span class="hljs-subst">&gt;</span>

const int IM_GET_CURRENT_MARKER_POSE <span class="hljs-subst">&#61;</span> <span class="hljs-number">0</span>;
const int IM_SET_NEW_MARKER_POSE <span class="hljs-subst">&#61;</span> <span class="hljs-number">1</span>;

geometry_msgs<span class="hljs-tag">::Point</span> g_current_point;
geometry_msgs<span class="hljs-tag">::Quaternion</span> g_current_quaternion;
ros<span class="hljs-tag">::Time</span> g_marker_time;

interactive_markers<span class="hljs-tag">::InteractiveMarkerServer</span> <span class="hljs-subst">*</span>g_IM_server; <span class="hljs-comment">//(&#34;rt_hand_marker&#34;);</span>
visualization_msgs<span class="hljs-tag">::InteractiveMarkerFeedback</span> <span class="hljs-subst">*</span>g_IM_feedback;

<span class="hljs-comment">//service:  return pose of marker from above globals;</span>
<span class="hljs-comment">// depending on mode, move IM programmatically, </span>

bool IM6DofSvcCB(example_interactive_marker<span class="hljs-tag">::ImNodeSvcMsgRequest</span><span class="hljs-subst">&amp;</span> request, example_interactive_marker<span class="hljs-tag">::ImNodeSvcMsgResponse</span><span class="hljs-subst">&amp;</span> response) {
    <span class="hljs-comment">//if busy, refuse new requests;</span>

    <span class="hljs-comment">// for a simple status query, handle it now;</span>
    <span class="hljs-keyword">if</span> (request<span class="hljs-built_in">.</span>cmd_mode <span class="hljs-subst">&#61;&#61;</span> IM_GET_CURRENT_MARKER_POSE) {
        ROS_INFO(<span class="hljs-string">&#34;IM6DofSvcCB: rcvd request for query--GET_CURRENT_MARKER_POSE&#34;</span>);
        response<span class="hljs-built_in">.</span>poseStamped_IM_current<span class="hljs-built_in">.</span><span class="hljs-keyword">header</span><span class="hljs-built_in">.</span>stamp <span class="hljs-subst">&#61;</span> g_marker_time;
        response<span class="hljs-built_in">.</span>poseStamped_IM_current<span class="hljs-built_in">.</span><span class="hljs-keyword">header</span><span class="hljs-built_in">.</span>frame_id <span class="hljs-subst">&#61;</span> <span class="hljs-string">&#34;world&#34;</span>;
        response<span class="hljs-built_in">.</span>poseStamped_IM_current<span class="hljs-built_in">.</span>pose<span class="hljs-built_in">.</span>position <span class="hljs-subst">&#61;</span> g_current_point;<span class="hljs-comment">//返回位置</span>
        response<span class="hljs-built_in">.</span>poseStamped_IM_current<span class="hljs-built_in">.</span>pose<span class="hljs-built_in">.</span>orientation <span class="hljs-subst">&#61;</span> g_current_quaternion;<span class="hljs-comment">//返回方向</span>
        <span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>;
    }

    <span class="hljs-comment">//command to move the marker to specified pose:</span>
    <span class="hljs-keyword">if</span> (request<span class="hljs-built_in">.</span>cmd_mode <span class="hljs-subst">&#61;&#61;</span> IM_SET_NEW_MARKER_POSE) {
        geometry_msgs<span class="hljs-tag">::PoseStamped</span> poseStamped_IM_desired;
        ROS_INFO(<span class="hljs-string">&#34;IM6DofSvcCB: rcvd request for action--SET_NEW_MARKER_POSE&#34;</span>);
        g_current_point <span class="hljs-subst">&#61;</span> request<span class="hljs-built_in">.</span>poseStamped_IM_desired<span class="hljs-built_in">.</span>pose<span class="hljs-built_in">.</span>position;<span class="hljs-comment">//设置位置</span>
        g_current_quaternion <span class="hljs-subst">&#61;</span> request<span class="hljs-built_in">.</span>poseStamped_IM_desired<span class="hljs-built_in">.</span>pose<span class="hljs-built_in">.</span>orientation;<span class="hljs-comment">//设置当前方向</span>
        g_marker_time <span class="hljs-subst">&#61;</span> ros<span class="hljs-tag">::Time</span><span class="hljs-tag">::now</span>();
        poseStamped_IM_desired <span class="hljs-subst">&#61;</span> request<span class="hljs-built_in">.</span>poseStamped_IM_desired;
        poseStamped_IM_desired<span class="hljs-built_in">.</span><span class="hljs-keyword">header</span><span class="hljs-built_in">.</span>stamp <span class="hljs-subst">&#61;</span> g_marker_time;
        response<span class="hljs-built_in">.</span>poseStamped_IM_current <span class="hljs-subst">&#61;</span> poseStamped_IM_desired;
        <span class="hljs-comment">//g_IM_feedback-&gt;pose &#61; poseStamped_IM_desired.pose;</span>

        response<span class="hljs-built_in">.</span>poseStamped_IM_current<span class="hljs-built_in">.</span><span class="hljs-keyword">header</span><span class="hljs-built_in">.</span>stamp <span class="hljs-subst">&#61;</span> g_marker_time;
        response<span class="hljs-built_in">.</span>poseStamped_IM_current<span class="hljs-built_in">.</span><span class="hljs-keyword">header</span><span class="hljs-built_in">.</span>frame_id <span class="hljs-subst">&#61;</span> <span class="hljs-string">&#34;torso&#34;</span>;
        response<span class="hljs-built_in">.</span>poseStamped_IM_current<span class="hljs-built_in">.</span>pose<span class="hljs-built_in">.</span>position <span class="hljs-subst">&#61;</span> g_current_point;
        response<span class="hljs-built_in">.</span>poseStamped_IM_current<span class="hljs-built_in">.</span>pose<span class="hljs-built_in">.</span>orientation <span class="hljs-subst">&#61;</span> g_current_quaternion;
        g_IM_server<span class="hljs-subst">-&gt;</span>setPose(<span class="hljs-string">&#34;des_hand_pose&#34;</span>, poseStamped_IM_desired<span class="hljs-built_in">.</span>pose); <span class="hljs-comment">//g_IM_feedback-&gt;marker_name,poseStamped_IM_desired.pose);</span>
        g_IM_server<span class="hljs-subst">-&gt;</span>applyChanges();
        <span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>;
    }
    ROS_WARN(<span class="hljs-string">&#34;IM6DofSvcCB: case not recognized&#34;</span>);
    <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
}

<span class="hljs-literal">void</span> processFeedback(
        const visualization_msgs<span class="hljs-tag">::InteractiveMarkerFeedbackConstPtr</span> <span class="hljs-subst">&amp;</span>feedback) {
    ROS_INFO_STREAM(feedback<span class="hljs-subst">-&gt;</span>marker_name <span class="hljs-subst">&lt;&lt;</span> <span class="hljs-string">&#34; is now at &#34;</span>
            <span class="hljs-subst">&lt;&lt;</span> feedback<span class="hljs-subst">-&gt;</span>pose<span class="hljs-built_in">.</span>position<span class="hljs-built_in">.</span>x <span class="hljs-subst">&lt;&lt;</span> <span class="hljs-string">&#34;, &#34;</span> <span class="hljs-subst">&lt;&lt;</span> feedback<span class="hljs-subst">-&gt;</span>pose<span class="hljs-built_in">.</span>position<span class="hljs-built_in">.</span>y
            <span class="hljs-subst">&lt;&lt;</span> <span class="hljs-string">&#34;, &#34;</span> <span class="hljs-subst">&lt;&lt;</span> feedback<span class="hljs-subst">-&gt;</span>pose<span class="hljs-built_in">.</span>position<span class="hljs-built_in">.</span>z);
    g_current_quaternion <span class="hljs-subst">&#61;</span> feedback<span class="hljs-subst">-&gt;</span>pose<span class="hljs-built_in">.</span>orientation;
    g_current_point <span class="hljs-subst">&#61;</span> feedback<span class="hljs-subst">-&gt;</span>pose<span class="hljs-built_in">.</span>position;
    g_marker_time <span class="hljs-subst">&#61;</span> ros<span class="hljs-tag">::Time</span><span class="hljs-tag">::now</span>();
}

<span class="hljs-literal">void</span> init_arrow_marker_x(visualization_msgs<span class="hljs-tag">::Marker</span> <span class="hljs-subst">&amp;</span>arrow_marker_x) {
    geometry_msgs<span class="hljs-tag">::Point</span> temp_point;

    arrow_marker_x<span class="hljs-built_in">.</span><span class="hljs-keyword">type</span> <span class="hljs-subst">&#61;</span> visualization_msgs<span class="hljs-tag">::Marker</span><span class="hljs-tag">::ARROW</span>; <span class="hljs-comment">//ROS example was a CUBE; changed to ARROW</span>
    <span class="hljs-comment">// specify/push-in the origin point for the arrow </span>
    temp_point<span class="hljs-built_in">.</span>x <span class="hljs-subst">&#61;</span> temp_point<span class="hljs-built_in">.</span>y <span class="hljs-subst">&#61;</span> temp_point<span class="hljs-built_in">.</span>z <span class="hljs-subst">&#61;</span> <span class="hljs-number">0</span>;
    arrow_marker_x<span class="hljs-built_in">.</span>points<span class="hljs-built_in">.</span>push_back(temp_point);
    <span class="hljs-comment">// Specify and push in the end point for the arrow </span>
    temp_point <span class="hljs-subst">&#61;</span> g_current_point;
    temp_point<span class="hljs-built_in">.</span>x <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.2</span>; <span class="hljs-comment">// arrow is this long in x direction</span>
    temp_point<span class="hljs-built_in">.</span>y <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.0</span>;
    temp_point<span class="hljs-built_in">.</span>z <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.0</span>;
    arrow_marker_x<span class="hljs-built_in">.</span>points<span class="hljs-built_in">.</span>push_back(temp_point);

    <span class="hljs-comment">// make the arrow very thin</span>
    arrow_marker_x<span class="hljs-built_in">.</span>scale<span class="hljs-built_in">.</span>x <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.01</span>;
    arrow_marker_x<span class="hljs-built_in">.</span>scale<span class="hljs-built_in">.</span>y <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.01</span>;
    arrow_marker_x<span class="hljs-built_in">.</span>scale<span class="hljs-built_in">.</span>z <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.01</span>;

    arrow_marker_x<span class="hljs-built_in">.</span>color<span class="hljs-built_in">.</span>r <span class="hljs-subst">&#61;</span> <span class="hljs-number">1.0</span>; <span class="hljs-comment">// red, for the x axis</span>
    arrow_marker_x<span class="hljs-built_in">.</span>color<span class="hljs-built_in">.</span>g <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.0</span>;
    arrow_marker_x<span class="hljs-built_in">.</span>color<span class="hljs-built_in">.</span>b <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.0</span>;
    arrow_marker_x<span class="hljs-built_in">.</span>color<span class="hljs-built_in">.</span>a <span class="hljs-subst">&#61;</span> <span class="hljs-number">1.0</span>;
}

<span class="hljs-literal">void</span> init_arrow_marker_y(visualization_msgs<span class="hljs-tag">::Marker</span> <span class="hljs-subst">&amp;</span>arrow_marker_y) {
    geometry_msgs<span class="hljs-tag">::Point</span> temp_point;
    arrow_marker_y<span class="hljs-built_in">.</span><span class="hljs-keyword">type</span> <span class="hljs-subst">&#61;</span> visualization_msgs<span class="hljs-tag">::Marker</span><span class="hljs-tag">::ARROW</span>;
    <span class="hljs-comment">// Push in the origin point for the arrow </span>
    temp_point<span class="hljs-built_in">.</span>x <span class="hljs-subst">&#61;</span> temp_point<span class="hljs-built_in">.</span>y <span class="hljs-subst">&#61;</span> temp_point<span class="hljs-built_in">.</span>z <span class="hljs-subst">&#61;</span> <span class="hljs-number">0</span>;
    arrow_marker_y<span class="hljs-built_in">.</span>points<span class="hljs-built_in">.</span>push_back(temp_point);
    <span class="hljs-comment">// Push in the end point for the arrow </span>
    temp_point<span class="hljs-built_in">.</span>x <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.0</span>;
    temp_point<span class="hljs-built_in">.</span>y <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.2</span>; <span class="hljs-comment">// points in the y direction</span>
    temp_point<span class="hljs-built_in">.</span>z <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.0</span>;
    arrow_marker_y<span class="hljs-built_in">.</span>points<span class="hljs-built_in">.</span>push_back(temp_point);

    arrow_marker_y<span class="hljs-built_in">.</span>scale<span class="hljs-built_in">.</span>x <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.01</span>;
    arrow_marker_y<span class="hljs-built_in">.</span>scale<span class="hljs-built_in">.</span>y <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.01</span>;
    arrow_marker_y<span class="hljs-built_in">.</span>scale<span class="hljs-built_in">.</span>z <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.01</span>;

    arrow_marker_y<span class="hljs-built_in">.</span>color<span class="hljs-built_in">.</span>r <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.0</span>;
    arrow_marker_y<span class="hljs-built_in">.</span>color<span class="hljs-built_in">.</span>g <span class="hljs-subst">&#61;</span> <span class="hljs-number">1.0</span>; <span class="hljs-comment">// color it green, for y axis</span>
    arrow_marker_y<span class="hljs-built_in">.</span>color<span class="hljs-built_in">.</span>b <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.0</span>;
    arrow_marker_y<span class="hljs-built_in">.</span>color<span class="hljs-built_in">.</span>a <span class="hljs-subst">&#61;</span> <span class="hljs-number">1.0</span>;
}

<span class="hljs-literal">void</span> init_arrow_marker_z(visualization_msgs<span class="hljs-tag">::Marker</span> <span class="hljs-subst">&amp;</span>arrow_marker_z) {
    geometry_msgs<span class="hljs-tag">::Point</span> temp_point;

    arrow_marker_z<span class="hljs-built_in">.</span><span class="hljs-keyword">type</span> <span class="hljs-subst">&#61;</span> visualization_msgs<span class="hljs-tag">::Marker</span><span class="hljs-tag">::ARROW</span>; <span class="hljs-comment">//CUBE;</span>
    <span class="hljs-comment">// Push in the origin point for the arrow </span>
    temp_point<span class="hljs-built_in">.</span>x <span class="hljs-subst">&#61;</span> temp_point<span class="hljs-built_in">.</span>y <span class="hljs-subst">&#61;</span> temp_point<span class="hljs-built_in">.</span>z <span class="hljs-subst">&#61;</span> <span class="hljs-number">0</span>;
    arrow_marker_z<span class="hljs-built_in">.</span>points<span class="hljs-built_in">.</span>push_back(temp_point);
    <span class="hljs-comment">// Push in the end point for the arrow </span>
    temp_point<span class="hljs-built_in">.</span>x <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.0</span>;
    temp_point<span class="hljs-built_in">.</span>y <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.0</span>;
    temp_point<span class="hljs-built_in">.</span>z <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.2</span>;
    arrow_marker_z<span class="hljs-built_in">.</span>points<span class="hljs-built_in">.</span>push_back(temp_point);

    arrow_marker_z<span class="hljs-built_in">.</span>scale<span class="hljs-built_in">.</span>x <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.01</span>;
    arrow_marker_z<span class="hljs-built_in">.</span>scale<span class="hljs-built_in">.</span>y <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.01</span>;
    arrow_marker_z<span class="hljs-built_in">.</span>scale<span class="hljs-built_in">.</span>z <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.01</span>;

    arrow_marker_z<span class="hljs-built_in">.</span>color<span class="hljs-built_in">.</span>r <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.0</span>;
    arrow_marker_z<span class="hljs-built_in">.</span>color<span class="hljs-built_in">.</span>g <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.0</span>;
    arrow_marker_z<span class="hljs-built_in">.</span>color<span class="hljs-built_in">.</span>b <span class="hljs-subst">&#61;</span> <span class="hljs-number">1.0</span>;
    arrow_marker_z<span class="hljs-built_in">.</span>color<span class="hljs-built_in">.</span>a <span class="hljs-subst">&#61;</span> <span class="hljs-number">1.0</span>;
}

<span class="hljs-literal">void</span> init_translate_control_x(visualization_msgs<span class="hljs-tag">::InteractiveMarkerControl</span> <span class="hljs-subst">&amp;</span>translate_control_x) {
    translate_control_x<span class="hljs-built_in">.</span>name <span class="hljs-subst">&#61;</span> <span class="hljs-string">&#34;move_x&#34;</span>;
    translate_control_x<span class="hljs-built_in">.</span>interaction_mode <span class="hljs-subst">&#61;</span>
            visualization_msgs<span class="hljs-tag">::InteractiveMarkerControl</span><span class="hljs-tag">::MOVE_AXIS</span>;
}

<span class="hljs-literal">void</span> init_translate_control_y(visualization_msgs<span class="hljs-tag">::InteractiveMarkerControl</span> <span class="hljs-subst">&amp;</span>translate_control_y) {
    translate_control_y<span class="hljs-built_in">.</span>name <span class="hljs-subst">&#61;</span> <span class="hljs-string">&#34;move_y&#34;</span>;
    translate_control_y<span class="hljs-built_in">.</span>interaction_mode <span class="hljs-subst">&#61;</span>
            visualization_msgs<span class="hljs-tag">::InteractiveMarkerControl</span><span class="hljs-tag">::MOVE_AXIS</span>;
    translate_control_y<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>x <span class="hljs-subst">&#61;</span> <span class="hljs-number">0</span>; <span class="hljs-comment">//point this in the y direction</span>
    translate_control_y<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>y <span class="hljs-subst">&#61;</span> <span class="hljs-number">0</span>;
    translate_control_y<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>z <span class="hljs-subst">&#61;</span> <span class="hljs-number">1</span>;
    translate_control_y<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>w <span class="hljs-subst">&#61;</span> <span class="hljs-number">1</span>;
}

<span class="hljs-literal">void</span> init_translate_control_z(visualization_msgs<span class="hljs-tag">::InteractiveMarkerControl</span> <span class="hljs-subst">&amp;</span>translate_control_z) {
    translate_control_z<span class="hljs-built_in">.</span>name <span class="hljs-subst">&#61;</span> <span class="hljs-string">&#34;move_z&#34;</span>;
    translate_control_z<span class="hljs-built_in">.</span>interaction_mode <span class="hljs-subst">&#61;</span>
            visualization_msgs<span class="hljs-tag">::InteractiveMarkerControl</span><span class="hljs-tag">::MOVE_AXIS</span>;
    translate_control_z<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>x <span class="hljs-subst">&#61;</span> <span class="hljs-number">0</span>; <span class="hljs-comment">//point this in the y direction</span>
    translate_control_z<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>y <span class="hljs-subst">&#61;</span> <span class="hljs-number">1</span>;
    translate_control_z<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>z <span class="hljs-subst">&#61;</span> <span class="hljs-number">0</span>;
    translate_control_z<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>w <span class="hljs-subst">&#61;</span> <span class="hljs-number">1</span>;
}

<span class="hljs-literal">void</span> init_rotx_control(visualization_msgs<span class="hljs-tag">::InteractiveMarkerControl</span> <span class="hljs-subst">&amp;</span>rotx_control) {
    rotx_control<span class="hljs-built_in">.</span>always_visible <span class="hljs-subst">&#61;</span> <span class="hljs-literal">true</span>;
    rotx_control<span class="hljs-built_in">.</span>interaction_mode <span class="hljs-subst">&#61;</span> visualization_msgs<span class="hljs-tag">::InteractiveMarkerControl</span><span class="hljs-tag">::ROTATE_AXIS</span>;
    rotx_control<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>x <span class="hljs-subst">&#61;</span> <span class="hljs-number">1</span>;
    rotx_control<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>y <span class="hljs-subst">&#61;</span> <span class="hljs-number">0</span>;
    rotx_control<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>z <span class="hljs-subst">&#61;</span> <span class="hljs-number">0</span>;
    rotx_control<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>w <span class="hljs-subst">&#61;</span> <span class="hljs-number">1</span>;
    rotx_control<span class="hljs-built_in">.</span>name <span class="hljs-subst">&#61;</span> <span class="hljs-string">&#34;rot_x&#34;</span>;
}

<span class="hljs-literal">void</span> init_roty_control(visualization_msgs<span class="hljs-tag">::InteractiveMarkerControl</span> <span class="hljs-subst">&amp;</span>roty_control) {
    roty_control<span class="hljs-built_in">.</span>always_visible <span class="hljs-subst">&#61;</span> <span class="hljs-literal">true</span>;
    roty_control<span class="hljs-built_in">.</span>interaction_mode <span class="hljs-subst">&#61;</span> visualization_msgs<span class="hljs-tag">::InteractiveMarkerControl</span><span class="hljs-tag">::ROTATE_AXIS</span>;
    roty_control<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>x <span class="hljs-subst">&#61;</span> <span class="hljs-number">0</span>;
    roty_control<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>y <span class="hljs-subst">&#61;</span> <span class="hljs-number">0</span>;
    roty_control<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>z <span class="hljs-subst">&#61;</span> <span class="hljs-number">1</span>;
    roty_control<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>w <span class="hljs-subst">&#61;</span> <span class="hljs-number">1</span>;
    roty_control<span class="hljs-built_in">.</span>name <span class="hljs-subst">&#61;</span> <span class="hljs-string">&#34;rot_y&#34;</span>;
}

<span class="hljs-literal">void</span> init_rotz_control(visualization_msgs<span class="hljs-tag">::InteractiveMarkerControl</span> <span class="hljs-subst">&amp;</span>rotz_control) {
    rotz_control<span class="hljs-built_in">.</span>always_visible <span class="hljs-subst">&#61;</span> <span class="hljs-literal">true</span>;
    rotz_control<span class="hljs-built_in">.</span>interaction_mode <span class="hljs-subst">&#61;</span> visualization_msgs<span class="hljs-tag">::InteractiveMarkerControl</span><span class="hljs-tag">::ROTATE_AXIS</span>;
    rotz_control<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>x <span class="hljs-subst">&#61;</span> <span class="hljs-number">0</span>;
    rotz_control<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>y <span class="hljs-subst">&#61;</span> <span class="hljs-number">1</span>;
    rotz_control<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>z <span class="hljs-subst">&#61;</span> <span class="hljs-number">0</span>;
    rotz_control<span class="hljs-built_in">.</span>orientation<span class="hljs-built_in">.</span>w <span class="hljs-subst">&#61;</span> <span class="hljs-number">1</span>;
    rotz_control<span class="hljs-built_in">.</span>name <span class="hljs-subst">&#61;</span> <span class="hljs-string">&#34;rot_z&#34;</span>;
}

<span class="hljs-literal">void</span> init_IM_control(visualization_msgs<span class="hljs-tag">::InteractiveMarkerControl</span> <span class="hljs-subst">&amp;</span>IM_control,
        visualization_msgs<span class="hljs-tag">::Marker</span> <span class="hljs-subst">&amp;</span>arrow_marker_x,
        visualization_msgs<span class="hljs-tag">::Marker</span> <span class="hljs-subst">&amp;</span>arrow_marker_y, visualization_msgs<span class="hljs-tag">::Marker</span> <span class="hljs-subst">&amp;</span>arrow_marker_z) {
    init_arrow_marker_x(arrow_marker_x); <span class="hljs-comment">//set up arrow params for x</span>
    init_arrow_marker_y(arrow_marker_y); <span class="hljs-comment">//set up arrow params for y</span>
    init_arrow_marker_z(arrow_marker_z); <span class="hljs-comment">//set up arrow params for z    </span>
    IM_control<span class="hljs-built_in">.</span>always_visible <span class="hljs-subst">&#61;</span> <span class="hljs-literal">true</span>;

    IM_control<span class="hljs-built_in">.</span>markers<span class="hljs-built_in">.</span>push_back(arrow_marker_x);
    IM_control<span class="hljs-built_in">.</span>markers<span class="hljs-built_in">.</span>push_back(arrow_marker_y);
    IM_control<span class="hljs-built_in">.</span>markers<span class="hljs-built_in">.</span>push_back(arrow_marker_z);
}

<span class="hljs-literal">void</span> init_int_marker(visualization_msgs<span class="hljs-tag">::InteractiveMarker</span> <span class="hljs-subst">&amp;</span>int_marker) {
    int_marker<span class="hljs-built_in">.</span><span class="hljs-keyword">header</span><span class="hljs-built_in">.</span>frame_id <span class="hljs-subst">&#61;</span> <span class="hljs-string">&#34;world&#34;</span>; <span class="hljs-comment">//base_link&#34;; ///world&#34;; // the reference frame for pose coordinates</span>
    int_marker<span class="hljs-built_in">.</span>name <span class="hljs-subst">&#61;</span> <span class="hljs-string">&#34;des_hand_pose&#34;</span>; <span class="hljs-comment">//name the marker</span>
    int_marker<span class="hljs-built_in">.</span>description <span class="hljs-subst">&#61;</span> <span class="hljs-string">&#34;Interactive Marker&#34;</span>;

    <span class="hljs-comment">/** Scale Down: this makes all of the arrows/disks for the user controls smaller than the default size */</span>
    int_marker<span class="hljs-built_in">.</span>scale <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.2</span>;

    <span class="hljs-comment">/** specify/push-in the origin for this marker */</span>
    <span class="hljs-comment">//let&#39;s pre-position the marker, else it will show up at the frame origin by default</span>
    int_marker<span class="hljs-built_in">.</span>pose<span class="hljs-built_in">.</span>position<span class="hljs-built_in">.</span>x <span class="hljs-subst">&#61;</span> g_current_point<span class="hljs-built_in">.</span>x;
    int_marker<span class="hljs-built_in">.</span>pose<span class="hljs-built_in">.</span>position<span class="hljs-built_in">.</span>y <span class="hljs-subst">&#61;</span> g_current_point<span class="hljs-built_in">.</span>y;
    int_marker<span class="hljs-built_in">.</span>pose<span class="hljs-built_in">.</span>position<span class="hljs-built_in">.</span>z <span class="hljs-subst">&#61;</span> g_current_point<span class="hljs-built_in">.</span>z;
}

int main(int argc, char<span class="hljs-subst">**</span> argv) {
    ros<span class="hljs-tag">::init</span>(argc, argv, <span class="hljs-string">&#34;simple_marker&#34;</span>); <span class="hljs-comment">// this will be the node name;</span>
    ros<span class="hljs-tag">::NodeHandle</span> nh; <span class="hljs-comment">//standard ros node handle </span>
    <span class="hljs-comment">// create an interactive marker server on the topic namespace simple_marker</span>
    interactive_markers<span class="hljs-tag">::InteractiveMarkerServer</span> server(<span class="hljs-string">&#34;rt_hand_marker&#34;</span>);
    g_IM_server <span class="hljs-subst">&#61;</span> <span class="hljs-subst">&amp;</span>server;
    ros<span class="hljs-tag">::ServiceServer</span> IM_6dof_interface_service <span class="hljs-subst">&#61;</span> nh<span class="hljs-built_in">.</span>advertiseService(<span class="hljs-string">&#34;IM6DofSvc&#34;</span>, <span class="hljs-subst">&amp;</span>IM6DofSvcCB);
    <span class="hljs-comment">// look for resulting pose messages on the topic: /rt_hand_marker/feedback,</span>
    <span class="hljs-comment">// which publishes a message of type visualization_msgs/InteractiveMarkerFeedback, which</span>
    <span class="hljs-comment">// includes a full &#34;pose&#34; of the marker.</span>
    <span class="hljs-comment">// Coordinates of the pose are with respect to the named frame</span>
    g_current_point<span class="hljs-built_in">.</span>x <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.5</span>; <span class="hljs-comment">//init these global values</span>
    g_current_point<span class="hljs-built_in">.</span>y <span class="hljs-subst">&#61;</span> <span class="hljs-subst">-</span><span class="hljs-number">0.5</span>; <span class="hljs-comment">//will be used in subsequent init fncs</span>
    g_current_point<span class="hljs-built_in">.</span>z <span class="hljs-subst">&#61;</span> <span class="hljs-number">0.2</span>;

    <span class="hljs-comment">// create an interactive marker for our server</span>
    visualization_msgs<span class="hljs-tag">::InteractiveMarker</span> int_marker;
    init_int_marker(int_marker);

    <span class="hljs-comment">// arrow markers; 3 to create a triad (frame)</span>
    visualization_msgs<span class="hljs-tag">::Marker</span> arrow_marker_x, arrow_marker_y, arrow_marker_z;
    <span class="hljs-comment">// create a control that contains the markers</span>
    visualization_msgs<span class="hljs-tag">::InteractiveMarkerControl</span> IM_control;
    <span class="hljs-comment">//initialize values for this control</span>
    init_IM_control(IM_control, arrow_marker_x, arrow_marker_y, arrow_marker_z);
    <span class="hljs-comment">// add the control to the interactive marker</span>
    int_marker<span class="hljs-built_in">.</span>controls<span class="hljs-built_in">.</span>push_back(IM_control);

    <span class="hljs-comment">// create a control that will move the marker</span>
    <span class="hljs-comment">// this control does not contain any markers,</span>
    <span class="hljs-comment">// which will cause RViz to insert two arrows</span>
    visualization_msgs<span class="hljs-tag">::InteractiveMarkerControl</span> translate_control_x,
            translate_control_y, translate_control_z;
    init_translate_control_x(translate_control_x);
    init_translate_control_y(translate_control_y);
    init_translate_control_z(translate_control_z);

    <span class="hljs-comment">// add x,y,and z-rotation controls</span>
    visualization_msgs<span class="hljs-tag">::InteractiveMarkerControl</span> rotx_control, roty_control,
            rotz_control;
    init_rotx_control(rotx_control);
    init_roty_control(roty_control);
    init_rotz_control(rotz_control);

    <span class="hljs-comment">// add the controls to the interactive marker</span>
    int_marker<span class="hljs-built_in">.</span>controls<span class="hljs-built_in">.</span>push_back(translate_control_x);
    int_marker<span class="hljs-built_in">.</span>controls<span class="hljs-built_in">.</span>push_back(translate_control_y);
    int_marker<span class="hljs-built_in">.</span>controls<span class="hljs-built_in">.</span>push_back(translate_control_z);
    int_marker<span class="hljs-built_in">.</span>controls<span class="hljs-built_in">.</span>push_back(rotx_control);
    int_marker<span class="hljs-built_in">.</span>controls<span class="hljs-built_in">.</span>push_back(rotz_control);
    int_marker<span class="hljs-built_in">.</span>controls<span class="hljs-built_in">.</span>push_back(roty_control);

    <span class="hljs-comment">// add the interactive marker to our collection &amp;</span>
    <span class="hljs-comment">// tell the server to call processFeedback() when feedback arrives for it</span>
    <span class="hljs-comment">//server.insert(int_marker, &amp;processFeedback);</span>
    g_IM_server<span class="hljs-subst">-&gt;</span>insert(int_marker, <span class="hljs-subst">&amp;</span>processFeedback);
    <span class="hljs-comment">// &#39;commit&#39; changes and send to all clients</span>
    <span class="hljs-comment">//server.applyChanges();</span>
    g_IM_server<span class="hljs-subst">-&gt;</span>applyChanges();

    <span class="hljs-comment">// start the ROS main loop</span>
    ROS_INFO(<span class="hljs-string">&#34;going into spin...&#34;</span>);
    ros<span class="hljs-tag">::spin</span>();
}</code></pre> 
<p>在前期的基础上运行</p> 
<pre class="prettyprint"><code class=" hljs ">rosrun example_interactive_marker exale_interactive_marker_node </code></pre> 
<p>然后在rviz界面添加Interactive Marker组件&#xff0c; <br /> <img src="https://img-blog.csdn.net/20180223084859577?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3hmbGFteQ&#61;&#61;/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA&#61;&#61;/dissolve/70" alt="这里写图片描述" title="" /> <br /> 可以看到 <br /> <img src="https://img-blog.csdn.net/20180223085952653?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3hmbGFteQ&#61;&#61;/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA&#61;&#61;/dissolve/70" alt="这里写图片描述" title="" /> <br /> 鼠标移动标记会显示出原点位置。</p> 
<hr /> 
<p><img src="https://img-blog.csdn.net/20180117213756040?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3hmbGFteQ&#61;&#61;/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA&#61;&#61;/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title="" /></p>
                </div>
                <link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/markdown_views-22a2fefd3b.css" rel="stylesheet">
                <link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/style-4566211012.css" rel="stylesheet">
        </div>
        <div id="treeSkill"></div>
    </article>
  <script>
  $(function() {
    setTimeout(function () {
      var mathcodeList = document.querySelectorAll('.htmledit_views img.mathcode');
      if (mathcodeList.length > 0) {
        var testImg = new Image();
        testImg.onerror = function () {
          mathcodeList.forEach(function (item) {
            $(item).before('<span class="img-codecogs">\\(' + item.alt + '\\)</span>');
            $(item).remove();
          })
          MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
        }
        testImg.src = mathcodeList[0].src;
      }
    }, 1000)
  })
  </script>
</div>
<div class="more-toolbox-new" id="toolBarBox">
    <div class="left-toolbox">
        <div class="toolbox-left">
            <div class="profile-box"><a class="profile-href" target="_blank" href="https://blog.csdn.net/wxflamy"><img class="profile-img" src="https://profile.csdnimg.cn/8/4/0/3_wxflamy"><span class="profile-name">我才睡醒</span></a></div>
            <div class="profile-attend">
                    <a class="tool-attend tool-bt-button tool-bt-attend" href="javascript:;" data-report-view='{"mod":"1592215036_002","spm":"1001.2101.3001.4232","extend1":"关注"}'>关注</a>
                <a class="tool-item-follow active-animation" style="display:none;">关注</a>
            </div>
        </div>
        <div class="toolbox-middle">
        <ul class="toolbox-list">
            <li class="tool-item tool-item-size tool-active is-like" id="is-like">
            <a class="tool-item-href">
                <img style="display:none;" id="is-like-imgactive-animation-like" class="animation-dom active-animation" src="https://csdnimg.cn/release/blogv2/dist/pc/img/tobarThumbUpactive.png" alt="">
                <img class="isactive" style="display:none" id="is-like-imgactive" src="https://csdnimg.cn/release/blogv2/dist/pc/img/newHeart2021Active.png" alt="">
                <img class="isdefault" style="display:block" id="is-like-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/newHeart2021Black.png" alt="">  
                <span id="spanCount" class="count ">
                        2
                </span>
            </a>
            <div class="tool-hover-tip"><span class="text space">点赞</span></div>
            </li>
            <li class="tool-item tool-item-size tool-active is-unlike" id="is-unlike">
            <a class="tool-item-href">
                <img class="isactive" style="margin-right:0px;display:none" id="is-unlike-imgactive" src="https://csdnimg.cn/release/blogv2/dist/pc/img/newUnHeart2021Active.png" alt="">
                <img class="isdefault" style="margin-right:0px;display:block" id="is-unlike-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/newUnHeart2021Black.png" alt="">
                <span id="unlikeCount" class="count "></span>
            </a>
            <div class="tool-hover-tip"><span class="text space">踩</span></div>
            </li>
            <li class="tool-item tool-item-size tool-active is-collection ">
            <a class="tool-item-href" href="javascript:;" data-report-click='{"mod":"popu_824","spm":"1001.2101.3001.4130","ab":"new"}'>
                <img style="display:none" id="is-collection-img-collection" class="animation-dom active-animation" src="https://csdnimg.cn/release/blogv2/dist/pc/img/tobarCollectionActive.png" alt="">
                <img class="isdefault" id="is-collection-img" style="display:block" src="https://csdnimg.cn/release/blogv2/dist/pc/img/newCollectBlack.png" alt="">
                <img class="isactive" id="is-collection-imgactive" style="display:none" src="https://csdnimg.cn/release/blogv2/dist/pc/img/newCollectActive.png" alt="">
                <span class="count get-collection " id="get-collection">
                    9
                </span>
            </a>
            <div class="tool-hover-tip"><span class="text space">收藏</span></div>
            </li>
            <li class="tool-item tool-item-size tool-active tool-item-reward">
                <a class="tool-item-href" href="javascript:;" data-report-click='{"mod":"popu_830","spm":"1001.2101.3001.4237","dest":"","ab":"new"}'>
                <img class="isdefault reward-bt" id="rewardBtNew" src="https://csdnimg.cn/release/blogv2/dist/pc/img/newRewardBlack.png" alt="打赏">
                <span class="count"></span>
                </a>
                <div class="tool-hover-tip"><span class="text space">打赏</span></div>
            </li>
            <li class="tool-item tool-item-size tool-active tool-item-comment">
            <a class="tool-item-href go-side-comment" data-report-click='{"spm":"1001.2101.3001.7009"}'>
                <img class="isdefault" src="https://csdnimg.cn/release/blogv2/dist/pc/img/newComment2021Black.png" alt="">
                <span class="count">
                    1
                </span>
            </a>
            <div class="tool-hover-tip"><span class="text space">评论</span></div>
            </li>
            <li class="tool-item tool-item-bar">
            </li>
            <li class="tool-item tool-item-size tool-active tool-QRcode" id="tool-share">
                <a class="tool-item-href" href="javascript:;" data-report-click='{"mod":"1582594662_002","spm":"1001.2101.3001.4129","ab":"new"}'>
                    <img class="isdefault" src="https://csdnimg.cn/release/blogv2/dist/pc/img/newShareBlack.png" alt="">
                </a>
                <div class="QRcode" id="tool-QRcode">
                    <div class="share-bg-icon icon1" id="shareBgIcon"></div>
                    <div class="share-bg-box">
                        <div class="share-content">
                            <img class="share-avatar" src="https://profile.csdnimg.cn/8/4/0/3_wxflamy" alt="">
                            <div class="share-tit">rviz中的标记（markers）和交互标记（interactive markers）</div>
                            <div class="share-dec">通过发布合适的话题可以在rviz的视图中显示合适的话题。可以在example_rviz_marker中查看例子example_rviz_marker.cpp。#include &amp;amp;lt;ros/ros.h&amp;amp;gt; #include &amp;amp;lt;visualization_msgs/Marker.h&amp;amp;gt; // need this for publishing markers#include...</div>
                            <a id="copyPosterUrl" class="url" data-report-click='{"spm":"1001.2101.3001.7493"}' data-report-view='{"spm":"1001.2101.3001.7493"}'>复制链接</a>
                        </div>
                        <div class="share-code">
                            <div class="share-code-box" id='shareCode'></div>
                            <div class="share-code-text">扫一扫</div>
                        </div>
                        
                    </div>
                    <div class="share-code-type">
                      
                    </div>
                </div>
            </li>
        </ul>
        </div>
        <div class="toolbox-right">
                <div class="tool-directory">
                    <a class="bt-columnlist-show"
                    data-id="7410765"
                    data-free="true"
                    data-subscribe="false"
                    data-title="ROS"
                    data-img="https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64"
                    data-url="https://blog.csdn.net/wxflamy/category_7410765.html"
                    data-sum="26"
                    data-people="16"
                    data-price="0"
                    data-oldprice="0"
                    data-join="false"
                    data-studyvip="false"
                    data-studysubscribe="false"
                    data-report-view='{"spm":"1001.2101.3001.6334","extend1":"专栏目录"}'
                    data-report-click='{"spm":"1001.2101.3001.6334","extend1":"专栏目录"}'
                    >专栏目录</a>
                </div>
        </div>
    </div>  
</div>
<script type=text/javascript crossorigin src="https://csdnimg.cn/release/phoenix/production/qrcode-7c90a92189.min.js"></script>
<script src="//g.csdnimg.cn/??sharewx/1.2.1/sharewx.js" type="text/javascript"></script>
<script type="text/javascript" crossorigin src="https://g.csdnimg.cn/common/csdn-login-box/csdn-login-box.js"></script>
<script type="text/javascript" crossorigin src="https://g.csdnimg.cn/collection-box/2.1.0/collection-box.js"></script>
                <div class="first-recommend-box recommend-box ">
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/qq_16397695/article/details/78989854"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6661.1","mod":"popu_871","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1-78989854-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"1","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/qq_16397695/article/details/78989854"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/qq_16397695/article/details/78989854" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6661.1","mod":"popu_871","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1-78989854-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"1","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/qq_16397695/article/details/78989854"}'  data-report-query='spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-78989854-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-78989854-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1"><em>Rviz</em><em>中</em>使用<em>Marker</em>工具</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/qq_16397695" target="_blank"><span class="blog-title">kmxz2016</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">01-06</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					6019
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/qq_16397695/article/details/78989854" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6661.1","mod":"popu_871","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1-78989854-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"1","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/qq_16397695/article/details/78989854"}'  data-report-query='spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-78989854-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-78989854-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1">上海硅步ROS连载系列43期 <em>RViz</em>工具使用实操


  https://mp.weixin.qq.com/s?__biz=MzA5NjkyMzI2OA==&amp;mid=2651197718&amp;idx=2&amp;sn=8d070f799a1af5e61fe733d4b027c89f&amp;chksm=8b5a0afdbc2d83eb769a9940cc75cb659caae47b721a286d8f66001bc</div>
			</a>
		</div>
	</div>
</div>
                </div>
            <script src="https://csdnimg.cn/release/blogv2/dist/components/js/pc_wap_commontools-d5fda285fa.min.js" type="text/javascript" async></script>
            <div class="second-recommend-box recommend-box ">
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/hysterisis/article/details/107253045"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.1","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-107253045-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"1","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/hysterisis/article/details/107253045"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/hysterisis/article/details/107253045" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.1","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-107253045-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"1","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/hysterisis/article/details/107253045"}'  data-report-query='spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-107253045-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-107253045-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1"><em>RVIZ</em><em>中</em>利用<em>marker</em>s<em>标记</em>历史路径（超详细）</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/hysterisis" target="_blank"><span class="blog-title">hysterisis的博客</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">07-10</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					2606
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/hysterisis/article/details/107253045" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.1","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-107253045-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"1","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/hysterisis/article/details/107253045"}'  data-report-query='spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-107253045-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-107253045-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1">写在前面
最近有道作业题需要将机器人的历史路径显示出来，但是网上很多相关的教程都是搬运了官网的链接，并没有详细的操作流程。。。因此我又花费了很多时间去ros官网上学习<em>marker</em>的用法，学习怎么写publisher和subscriber，最终成功将路径显示了出来。这篇文章是对这个过程的详细的介绍，原理和代码实践部分会分开，因此如果你赶时间只要一个结果的话，把详细的讲解跳过即可。不过我还是推荐看完，毕竟我花了这么多精力来写知其然也要知其所以然。
（我是ROS新手，从作业这一点也应该看出来了XD，有不对的地方欢</div>
			</a>
		</div>
	</div>
</div>
            </div>
<a id="commentBox" name="commentBox"></a>
<div id="pcCommentBox" class="comment-box comment-box-new2  login-comment-box-new" style="display:block">
		<div class="has-comment" style="display:block">
		<div class="has-comment-tit">评论<span class="count go-side-comment">1</span><span class="text go-side-comment">条</span><img class="go-side-comment more" src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentArrowRightWhite.png" alt=""><a class="has-comment-bt-right go-side-comment focus">写评论</a></div>
			<div class="has-comment-con comment-operate-item"></div>
		</div>
		<div class="unhas-comment" style="display:none">
			<div class="unhas-comment-left">评论</div>
			<div class="unhas-comment-right"><a class="go-side-comment focus">写评论</a></div>
		</div>
</div>
            <div class="recommend-box insert-baidu-box recommend-box-style ">
                <div class="recommend-item-box no-index" style="display:none"></div>
<div class="recommend-item-box type_download clearfix" data-url="https://download.csdn.net/download/chenxh/145049"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.2","mod":"popu_387","extra":"{\"highlightScore\":\"0.0\",\"utm_medium\":\"distribute.pc_relevant.none-task-download-2~default~AD_ESLANDING~default-2-145049-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"default","index":"2","strategy":"2~default~AD_ESLANDING~default","dest":"https://download.csdn.net/download/chenxh/145049"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://download.csdn.net/download/chenxh/145049" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.2","mod":"popu_387","extra":"{\"highlightScore\":\"0.0\",\"utm_medium\":\"distribute.pc_relevant.none-task-download-2~default~AD_ESLANDING~default-2-145049-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"default","index":"2","strategy":"2~default~AD_ESLANDING~default","dest":"https://download.csdn.net/download/chenxh/145049"}'  data-report-query='spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-download-2%7Edefault%7EAD_ESLANDING%7Edefault-2-145049-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-download-2%7Edefault%7EAD_ESLANDING%7Edefault-2-145049-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1"><em>Interactive</em> SQL Tool (using ADO)<em>交互</em>的sql工具</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info display-flex">
					<span class="info-block">02-23</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://download.csdn.net/download/chenxh/145049" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.2","mod":"popu_387","extra":"{\"highlightScore\":\"0.0\",\"utm_medium\":\"distribute.pc_relevant.none-task-download-2~default~AD_ESLANDING~default-2-145049-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"default","index":"2","strategy":"2~default~AD_ESLANDING~default","dest":"https://download.csdn.net/download/chenxh/145049"}'  data-report-query='spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-download-2%7Edefault%7EAD_ESLANDING%7Edefault-2-145049-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-download-2%7Edefault%7EAD_ESLANDING%7Edefault-2-145049-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1"><em>Interactive</em> SQL Tool (using ADO)<em>交互</em>的sql工具</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/jcsm__/article/details/105177752"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.3","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-3-105177752-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"3","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/jcsm__/article/details/105177752"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/jcsm__/article/details/105177752" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.3","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-3-105177752-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"3","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/jcsm__/article/details/105177752"}'  data-report-query='spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-105177752-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-105177752-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1">ROS学习笔记&mdash;&mdash;<em>rviz</em>的一些示例</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/jcsm__" target="_blank"><span class="blog-title">jcsm__的博客</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">03-29</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					3635
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/jcsm__/article/details/105177752" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.3","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-3-105177752-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"3","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/jcsm__/article/details/105177752"}'  data-report-query='spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-105177752-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-105177752-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1">在之前的一片博客里，已经写到了一种<em>rviz</em>的示例，调用本地摄像头在<em>rviz</em><em>中</em>显示实时画面：调用本地摄像头并在<em>rviz</em><em>中</em>显示

这篇主要分享在ROS Wiki上的官方示例教程，有删减，有补充。上篇也提到了，主要是以下几个方面：

<em>Marker</em>s:发送一些基本形状在<em>rviz</em>显示
	Interractive <em>Marker</em>s:可以进行<em>交互</em>的<em>marker</em>s
	Plugins:自定义新的显示和控制插件
	Li...</div>
			</a>
		</div>
	</div>
</div>
		<dl id="recommend-item-box-tow" class="recommend-item-box type_blog clearfix">
			<div id="kp_box_59" data-pid="59"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1076724771190722"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="fluid"
     data-ad-layout-key="-i0-f+2e-23-1h"
     data-ad-client="ca-pub-1076724771190722"
     data-ad-slot="3854176062"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script><img class="pre-img-lasy" data-src="https://kunyu.csdn.net/1.png?p=59&adId=1019525&a=1019525&c=0&k=rviz中的标记（markers）和交互标记（interactive markers）&spm=1001.2101.3001.5003&articleId=79347689&d=1&t=3&u=dedf1548a4264ba4ae1c3ba1da70f5f5" style="display: block;width: 0px;height: 0px;"></div>
		</dl>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/tiancailx/article/details/78666212"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.4","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-4-78666212-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"4","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/tiancailx/article/details/78666212"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/tiancailx/article/details/78666212" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.4","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-4-78666212-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"4","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/tiancailx/article/details/78666212"}'  data-report-query='spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-78666212-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-78666212-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1"><em>Rviz</em>教程系列第一章之<em>Marker</em>s</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/tiancailx" target="_blank"><span class="blog-title">李想的博客</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">11-29</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					7192
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/tiancailx/article/details/78666212" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.4","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-4-78666212-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"4","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/tiancailx/article/details/78666212"}'  data-report-query='spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-78666212-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-78666212-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1">与其他显示不同的是，<em>标记</em>显示让你可视化<em>rviz</em><em>中</em>的数据，而不需要<em>rviz</em>知道解释数据的任何事情。 相反，原始对象通过visualization_msgs / <em>Marker</em>消息发送到显示器，让您显示诸如箭头，框，球体和线条之类的东西。</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/zeuseign/article/details/73656273"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.5","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-5-73656273-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"5","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/zeuseign/article/details/73656273"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/zeuseign/article/details/73656273" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.5","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-5-73656273-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"5","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/zeuseign/article/details/73656273"}'  data-report-query='spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-5-73656273-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-5-73656273-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1"><em>Rviz</em>教程（五）：<em>Interactive</em> <em>Marker</em>s: Writing a Simple <em>Interactive</em> <em>Marker</em> Server</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/zeuseign" target="_blank"><span class="blog-title">沫尘的博客</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">06-23</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					1171
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/zeuseign/article/details/73656273" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.5","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-5-73656273-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"5","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/zeuseign/article/details/73656273"}'  data-report-query='spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-5-73656273-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-5-73656273-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1"><em>Interactive</em> <em>Marker</em>s: Writing a Simple <em>Interactive</em> <em>Marker</em> Server
Description:&nbsp;This
 tutorial explains how to setup a minimalist server which manages a single <em>interactive</em> <em>marker</em>.

Tutorial
 Level:&nbsp;</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/weixin_39629780/article/details/111725313"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.6","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-6-111725313-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"6","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/weixin_39629780/article/details/111725313"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/weixin_39629780/article/details/111725313" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.6","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-6-111725313-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"6","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/weixin_39629780/article/details/111725313"}'  data-report-query='spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6-111725313-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6-111725313-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1"><em>marker</em>主题 ros_<em>rviz</em>/DisplayTypes/<em>Marker</em></div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/weixin_39629780" target="_blank"><span class="blog-title">weixin_39629780的博客</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">12-20</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					155
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/weixin_39629780/article/details/111725313" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.6","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-6-111725313-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"6","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/weixin_39629780/article/details/111725313"}'  data-report-query='spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6-111725313-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6-111725313-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1">The <em>Marker</em>s display allows programmatic addition of various primitive shapes to the 3D view by sending a visualization_msgs/<em>Marker</em> or visualization_msgs/<em>Marker</em>Array message.The <em>Marker</em>s: Basic Shapes t...</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://yamagota.blog.csdn.net/article/details/124642928"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.7","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-7-124642928-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"7","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://yamagota.blog.csdn.net/article/details/124642928"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://yamagota.blog.csdn.net/article/details/124642928" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.7","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-7-124642928-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"7","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://yamagota.blog.csdn.net/article/details/124642928"}'  data-report-query='spm=1001.2101.3001.6650.7&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-7-124642928-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-7-124642928-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1">ROS<em>中</em>级：<em>Interactive</em> <em>Marker</em>s是个啥？</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/gongdiwudu" target="_blank"><span class="blog-title">gongdiwudu的专栏</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">05-08</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					424
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://yamagota.blog.csdn.net/article/details/124642928" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.7","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-7-124642928-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"7","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://yamagota.blog.csdn.net/article/details/124642928"}'  data-report-query='spm=1001.2101.3001.6650.7&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-7-124642928-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-7-124642928-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1">一、前言

描述：本教程解释了什么是<em>交互</em>式<em>标记</em>，并教您一些基本概念。

<em>交互</em>式<em>标记</em>类似于前面教程<em>中</em>描述的&ldquo;常规&rdquo;<em>标记</em>，但是它们允许用户通过更改位置或旋转、单击它们或从分配给每个<em>标记</em>的上下文菜单<em>中</em>选择某些内容来与它们进行<em>交互</em>。 它们由visualization_msgs/<em>Interactive</em><em>Marker</em> 消息表示，该消息包含一个上下文菜单和几个控件（visualization_msgs/<em>Interactive</em><em>Marker</em>Control）。这些控件定义了<em>交互</em>式<em>标记</em>的不同可视部分，可以由几个常规<em>标记</em>（visua</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://yamagota.blog.csdn.net/article/details/124710922"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.8","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-8-124710922-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"8","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://yamagota.blog.csdn.net/article/details/124710922"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://yamagota.blog.csdn.net/article/details/124710922" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.8","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-8-124710922-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"8","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://yamagota.blog.csdn.net/article/details/124710922"}'  data-report-query='spm=1001.2101.3001.6650.8&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-8-124710922-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-8-124710922-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1">ROS知识：<em>interactive</em>_<em>marker</em>_tutorials(2)</div>
					<div class="tag">最新发布</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/gongdiwudu" target="_blank"><span class="blog-title">gongdiwudu的专栏</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">05-13</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					183
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://yamagota.blog.csdn.net/article/details/124710922" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.8","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-8-124710922-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"8","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://yamagota.blog.csdn.net/article/details/124710922"}'  data-report-query='spm=1001.2101.3001.6650.8&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-8-124710922-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-8-124710922-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1">一、说明

这里重点学习，解释<em>interactive</em>_<em>marker</em>_tutorials是何方圣神，如何编程，如何应用；将按照官网关于可视化的五个教程：

visualization_tutorials:


1 <em>interactive</em>_<em>marker</em>_tutorials 
2 lib<em>rviz</em>_tutorial 
3 <em>rviz</em>_plugin_tutorials 
4 <em>rviz</em>_python_tutorial
5 visualization_<em>marker</em>_tutorials

以上五个教程就是完整的视觉教程...</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/zeuseign/article/details/73652282"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.9","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-9-73652282-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"9","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/zeuseign/article/details/73652282"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/zeuseign/article/details/73652282" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.9","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-9-73652282-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"9","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/zeuseign/article/details/73652282"}'  data-report-query='spm=1001.2101.3001.6650.9&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-9-73652282-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-9-73652282-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1"><em>Rviz</em>教程（四）：<em>Interactive</em> <em>Marker</em>s: Getting Started</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/zeuseign" target="_blank"><span class="blog-title">沫尘的博客</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">06-23</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					615
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/zeuseign/article/details/73652282" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.9","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-9-73652282-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"9","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/zeuseign/article/details/73652282"}'  data-report-query='spm=1001.2101.3001.6650.9&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-9-73652282-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-9-73652282-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1"><em>Interactive</em> <em>Marker</em>s: Getting Started
Description:&nbsp;This
 tutorial explains what <em>Interactive</em> <em>Marker</em> are and teaches you some of the basic concepts.

Tutorial
 Level:&nbsp;BEGINNER

Next
 Tutorial:&nbsp;In</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/u011104647/article/details/50424162"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.10","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-10-50424162-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"10","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/u011104647/article/details/50424162"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/u011104647/article/details/50424162" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.10","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-10-50424162-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"10","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/u011104647/article/details/50424162"}'  data-report-query='spm=1001.2101.3001.6650.10&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-10-50424162-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-10-50424162-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1">ROS学习笔记(六)::<em>RVIZ</em>::<em>Interactive</em> <em>Marker</em>s::Getting Started</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/u011104647" target="_blank"><span class="blog-title">小溪流的足迹</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">12-29</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					2923
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/u011104647/article/details/50424162" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.10","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-10-50424162-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"10","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/u011104647/article/details/50424162"}'  data-report-query='spm=1001.2101.3001.6650.10&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-10-50424162-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-10-50424162-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1">1.互动<em>标记</em>物：入门
说明：这个教程解释了互动<em>标记</em>物是什么，和一些基本概念。


2.简介

<em>交互</em>式<em>标记</em>物是类似于在前面的教程描述的&ldquo;正规&rdquo;的<em>标记</em>，然而，它们允许用户通过改变其位置或旋转，还可以点击它们或从分配给每个<em>标记</em>的上下文菜单<em>中</em>选择东西与之互动。
它们由visualization_msgs/ <em>Interactive</em><em>Marker</em>消息表示，这个消息包含上下文菜单和几个控制（visu</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/Bobsweetie/article/details/70919191"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.11","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-11-70919191-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"11","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/Bobsweetie/article/details/70919191"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/Bobsweetie/article/details/70919191" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.11","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-11-70919191-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"11","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/Bobsweetie/article/details/70919191"}'  data-report-query='spm=1001.2101.3001.6650.11&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-11-70919191-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-11-70919191-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1"><em>Rviz</em>可视化<em>交互</em>之Maker（二）</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/Bobsweetie" target="_blank"><span class="blog-title">Bobsweetie的专栏</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">04-28</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					1377
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/Bobsweetie/article/details/70919191" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.11","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-11-70919191-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"11","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/Bobsweetie/article/details/70919191"}'  data-report-query='spm=1001.2101.3001.6650.11&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-11-70919191-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-11-70919191-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1">#!/usr/bin/env python
#coding=utf-8


import rospy

#导入<em>交互</em><em>marker</em>服务端
from <em>interactive</em>_<em>marker</em>s.<em>interactive</em>_<em>marker</em>_server import *

#导入视觉消息
from visualization_msgs.msg import *

#<em>交互</em>毁掉函数
def processFeedbac</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/weixin_42048023/article/details/83007159"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.12","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-12-83007159-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"12","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/weixin_42048023/article/details/83007159"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/weixin_42048023/article/details/83007159" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.12","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-12-83007159-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"12","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/weixin_42048023/article/details/83007159"}'  data-report-query='spm=1001.2101.3001.6650.12&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-12-83007159-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-12-83007159-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1">怎么利用<em>Interactive</em><em>Marker</em>s在<em>rviz</em>上画&ldquo;曲线&rdquo;</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/weixin_42048023" target="_blank"><span class="blog-title">weixin_42048023的博客</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">10-16</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					1744
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/weixin_42048023/article/details/83007159" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.12","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-12-83007159-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"12","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/weixin_42048023/article/details/83007159"}'  data-report-query='spm=1001.2101.3001.6650.12&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-12-83007159-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-12-83007159-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1"><em>rviz</em>是大家熟练玩转的界面，它是基于QT开发的一款比较成熟的平台，并留有一些接口给用户进行自定义功能的插入，例如基础的文本框输入、图形界面操作的cmd_vel速度下发插件(<em>rviz</em> plugin tutorials)，但做一件可增删改查的曲线绘制工具目前在教程<em>中</em>还没有普及。

首先要能轻松改变曲线端点位置，若是自己开发QT界面可以开心地使用QDrag制作拖拽图标作为曲线的可拖拽端点，但<em>rviz</em>仅...</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/qq_38441692/article/details/105327444"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.13","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-13-105327444-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"13","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/qq_38441692/article/details/105327444"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/qq_38441692/article/details/105327444" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.13","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-13-105327444-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"13","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/qq_38441692/article/details/105327444"}'  data-report-query='spm=1001.2101.3001.6650.13&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-13-105327444-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-13-105327444-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1">ROS Qt5 lib<em>rviz</em>人机<em>交互</em>界面开发四（添加<em>rviz</em>显示界面）</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/qq_38441692" target="_blank"><span class="blog-title">蒋程扬的部落格</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">04-05</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					1万+
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/qq_38441692/article/details/105327444" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.13","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-13-105327444-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"13","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/qq_38441692/article/details/105327444"}'  data-report-query='spm=1001.2101.3001.6650.13&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-13-105327444-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-13-105327444-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1">创建lib<em>rviz</em>界面类：
q<em>rviz</em>_widget.h
#ifndef Q<em>RVIZ</em>_WIDGET_H
#define Q<em>RVIZ</em>_WIDGET_H

#include &lt;QWidget&gt;
#include &lt;<em>rviz</em>/visualization_manager.h&gt;
#include &lt;<em>rviz</em>/render_panel.h&gt;
#include &lt;rvi...</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/qq_38441692/article/details/107877400"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.14","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-14-107877400-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"14","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/qq_38441692/article/details/107877400"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/qq_38441692/article/details/107877400" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.14","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-14-107877400-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"14","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/qq_38441692/article/details/107877400"}'  data-report-query='spm=1001.2101.3001.6650.14&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-14-107877400-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-14-107877400-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1">ROS Qt5 lib<em>rviz</em>人机<em>交互</em>界面开发十三（显示话题列表）</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/qq_38441692" target="_blank"><span class="blog-title">蒋程扬的部落格</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">08-08</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					2413
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/qq_38441692/article/details/107877400" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.14","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-14-107877400-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"14","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/qq_38441692/article/details/107877400"}'  data-report-query='spm=1001.2101.3001.6650.14&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-14-107877400-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-14-107877400-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1">本系列教程文章专栏:
ROS机器人GUI程序开发
本系列课程已上线古月学院，欢迎感兴趣的小伙伴订阅：

ROS Qt开发环境搭建以及基础知识介绍
ROS人机<em>交互</em>软件的界面开发
ROS <em>Rviz</em>组件开发方法


开发交流QQ群： 797497206
完整项目代码：
github
文章目录一，实现效果二，核心API三，程序<em>中</em>调用
一，实现效果
可以显示多机/单机话题列表，就是在终端使用rostopic list查看话题列表的功能实现，主要参考文献：ROS WIKI

二，核心API
主要就是这么两句：
ros:</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/nkc555/article/details/119350977"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.15","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-15-119350977-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"15","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/nkc555/article/details/119350977"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/nkc555/article/details/119350977" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.15","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-15-119350977-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"15","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/nkc555/article/details/119350977"}'  data-report-query='spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-15-119350977-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-15-119350977-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1">ROS Moveit坑:<em>Interactive</em> <em>Marker</em>(拖动轨迹球)消失与无法拖动的问题</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/nkc555" target="_blank"><span class="blog-title">nkc555的博客</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">08-03</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					1136
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/nkc555/article/details/119350977" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.15","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-15-119350977-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"15","strategy":"2~default~CTRLIST~Rate","dest":"https://blog.csdn.net/nkc555/article/details/119350977"}'  data-report-query='spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-15-119350977-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-15-119350977-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1">环境描述

Ubuntu 18.04
ROS melodic
Moveit SetUp Assistant version==2.0

依据Urdf文件导出相应的Moveit！launch文件

此部分可见古月老师的《ROS机器人开发实践》第10章
具体配置流程：https://blog.csdn.net/huangjunsheng123/article/details/108913147

问题描述
按照上面两份教程的指导导出相应的moveit_config功能包后于终端<em>中</em>运行
roslaunch min</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/u013834525/article/details/80447931"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.16","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-16-80447931-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"16","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/u013834525/article/details/80447931"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/u013834525/article/details/80447931" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.16","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-16-80447931-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"16","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/u013834525/article/details/80447931"}'  data-report-query='spm=1001.2101.3001.6650.16&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-16-80447931-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-16-80447931-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1">ROS之<em>rviz</em>显示历史运动轨迹、路径的各种方法（visualization_msgs/<em>Marker</em>、nav_msgs/Path）</div>
					<div class="tag">热门推荐</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/u013834525" target="_blank"><span class="blog-title">白夜行的狼</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">05-25</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					4万+
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/u013834525/article/details/80447931" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.16","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-16-80447931-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"16","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/u013834525/article/details/80447931"}'  data-report-query='spm=1001.2101.3001.6650.16&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-16-80447931-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-16-80447931-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1">0.写在最前面

希望大家收藏：

本文持续更新地址：https://haoqchen.site/2018/05/25/ROS-show-trajectory/

左侧专栏还在更新其他ROS实用技巧哦，关注一波？

在使用ROS进行机器人控制的时候，有时候会希望能够显示并且保留机器人的历史运动轨迹，比如最近在做行人跟踪，就希望能够保留多个行人的轨迹以及机器人的运动。本文将会介绍网上搜罗到...</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/taste_cyn/article/details/82763353"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.17","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-17-82763353-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"17","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/taste_cyn/article/details/82763353"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/taste_cyn/article/details/82763353" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.17","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-17-82763353-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"17","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/taste_cyn/article/details/82763353"}'  data-report-query='spm=1001.2101.3001.6650.17&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-17-82763353-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-17-82763353-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1">ROS&mdash;<em>interactive</em> <em>Marker</em>s-可<em>交互</em>式<em>Marker</em>s</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/taste_cyn" target="_blank"><span class="blog-title">taste_cyn的博客</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">09-18</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					747
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/taste_cyn/article/details/82763353" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.17","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-17-82763353-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"17","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/taste_cyn/article/details/82763353"}'  data-report-query='spm=1001.2101.3001.6650.17&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-17-82763353-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-17-82763353-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1"><em>rviz</em>官网教程：这里，其<em>中</em>3-5属于<em>交互</em>式<em>Marker</em>s的教程。
visualization_msgs。
Basic Controls ：
<em>interactive</em><em>Marker</em>Server:创建一个实例对象，将所有的<em>Interactive</em><em>Marker</em> messages都传给这个对象：
boost::shared_ptr&amp;amp;lt;<em>interactive</em>_<em>marker</em>s::<em>Interactive</em>Mark...</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/REXLXX/article/details/102768121"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.18","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-18-102768121-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"18","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/REXLXX/article/details/102768121"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/REXLXX/article/details/102768121" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.18","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-18-102768121-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"18","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/REXLXX/article/details/102768121"}'  data-report-query='spm=1001.2101.3001.6650.18&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-18-102768121-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-18-102768121-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1"><em>rviz</em><em>中</em>显示<em>Marker</em><em>标记</em></div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/REXLXX" target="_blank"><span class="blog-title">REXLXX的博客</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">11-05</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					5142
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/REXLXX/article/details/102768121" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.18","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-18-102768121-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"18","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/REXLXX/article/details/102768121"}'  data-report-query='spm=1001.2101.3001.6650.18&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-18-102768121-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-18-102768121-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1"><em>Marker</em><em>标记</em>的使用
本文主要涉及<em>rviz</em><em>中</em>visualization_msgs/<em>Marker</em> Message，这些话题可以在<em>rviz</em><em>中</em>可视化以观察自己数据是否符合预期。
1. roswiki上相应msg的定义

uint8 ARROW=0
uint8 CUBE=1
uint8 SPHERE=2
uint8 CYLINDER=3
uint8 LINE_STRIP=4
uint8 LINE_LIS...</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/weixin_39699121/article/details/111725305"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.19","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-19-111725305-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"19","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/weixin_39699121/article/details/111725305"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/weixin_39699121/article/details/111725305" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.19","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-19-111725305-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"19","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/weixin_39699121/article/details/111725305"}'  data-report-query='spm=1001.2101.3001.6650.19&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-19-111725305-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-19-111725305-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1"><em>marker</em>主题 ros_ROS专题----数据可视化<em>rviz</em>简明笔记</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/weixin_39699121" target="_blank"><span class="blog-title">weixin_39699121的博客</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">12-20</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					170
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/weixin_39699121/article/details/111725305" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.19","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-19-111725305-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"19","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/weixin_39699121/article/details/111725305"}'  data-report-query='spm=1001.2101.3001.6650.19&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-19-111725305-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-19-111725305-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1">ROS数据可视化<em>rviz</em>简明笔记----<em>交互</em>式<em>标记</em>：入门本教程解释什么是<em>交互</em>式<em>标记</em>，并教你一些基本的概念。<em>交互</em>式<em>标记</em>：编写简单的<em>交互</em>式<em>标记</em>服务器本教程介绍如何设置管理单个<em>交互</em>式<em>标记</em>的极简主义服务器。<em>交互</em>式<em>标记</em>：基本控件本教程解释basic_controls教程代码如何工作。插件：新显示类型如何编写一个插件，为<em>RViz</em>添加一个新的显示功能。插件：新的可停靠面板如何编写一个插件，添加一个新类型的可停靠...</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/HETONGDE/article/details/104310543"  data-report-view='{"ab":"new","spm":"1001.2101.3001.6650.20","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-20-104310543-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"20","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/HETONGDE/article/details/104310543"}'>
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/HETONGDE/article/details/104310543" class="tit" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.20","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-20-104310543-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"20","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/HETONGDE/article/details/104310543"}'  data-report-query='spm=1001.2101.3001.6650.20&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-20-104310543-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-20-104310543-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
					<div class="left ellipsis-online ellipsis-online-1">ros<em>中</em><em>交互</em>显示<em>Interactive</em><em>Marker</em>的使用例子</div>
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/HETONGDE" target="_blank"><span class="blog-title">HETONGDE的博客</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">02-14</span>
					<span class="info-block read"><img class="read-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					472
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/HETONGDE/article/details/104310543" target="_blank"  data-report-click='{"ab":"new","spm":"1001.2101.3001.6650.20","mod":"popu_387","extra":"{\"highlightScore\":0.0,\"utm_medium\":\"distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-20-104310543-blog-79347689.pc_relevant_3mothn_strategy_recovery\",\"dist_request_id\":\"1671708329938_46453\"}","dist_request_id":"1671708329938_46453","ab_strategy":"recoveryv3_v2","index":"20","strategy":"2~default~BlogCommendFromBaidu~Rate","dest":"https://blog.csdn.net/HETONGDE/article/details/104310543"}'  data-report-query='spm=1001.2101.3001.6650.20&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-20-104310543-blog-79347689.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-20-104310543-blog-79347689.pc_relevant_3mothn_strategy_recovery'>
				<div class="desc ellipsis-online ellipsis-online-1">直接贴例子代码，实现画多条线，鼠标单击每条线时会有菜单显示信息。


#!/usr/bin/env python

&quot;&quot;&quot;
Copyright (c) 2011, Willow Garage, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modificati...</div>
			</a>
		</div>
	</div>
</div>
            </div>
<div id="recommendNps" class="recommend-nps-box common-nps-box">
  <h3 class="aside-title">“相关推荐”对你有帮助么？</h3>
  <div class="aside-content">
      <ul class="newnps-list">
          <li class="newnps-item" data-type="非常没帮助">
              <div class="newnps-img-box">
                  <img class="newnps-img active" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeel1.png" alt="">
                  <img class="newnps-img default" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeelGrey1.png" alt="">
              </div>
              <div class="newnps-text">非常没帮助</div>
          </li>
          <li class="newnps-item" data-type="没帮助">
              <div class="newnps-img-box">
                  <img class="newnps-img active" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeel2.png" alt="">
                  <img class="newnps-img default" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeelGrey2.png" alt="">
              </div>
              <div class="newnps-text">没帮助</div>
          </li>
          <li class="newnps-item" data-type="一般">
              <div class="newnps-img-box">
                  <img class="newnps-img active" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeel3.png" alt="">
                  <img class="newnps-img default" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeelGrey3.png" alt="">
              </div>
              <div class="newnps-text">一般</div>
          </li>
          <li class="newnps-item" data-type="有帮助">
              <div class="newnps-img-box">
                  <img class="newnps-img active" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeel4.png" alt="">
                  <img class="newnps-img default" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeelGrey4.png" alt="">
              </div>
              <div class="newnps-text">有帮助</div>
          </li>
          <li class="newnps-item" data-type="非常有帮助">
              <div class="newnps-img-box">
                  <img class="newnps-img active" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeel5.png" alt="">
                  <img class="newnps-img default" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeelGrey5.png" alt="">
              </div>
              <div class="newnps-text">非常有帮助</div>
          </li>
      </ul>
      <div class="newnps-form-box">
      <div class="newnps-form">
          <input type="text" placeholder="请输入建议或反馈后点击提交" class="newnps-input">
          <span class="newnps-btn">提交</span>
      </div>
      </div>
  </div>
</div>            <div class="template-box">
                <span>©️2022 CSDN</span>
                <span>皮肤主题：大白</span>
                <span> 设计师：CSDN官方博客</span>
                <span>
                    <a href="https://blog.csdn.net/" class="back-home c-blue c-blue-hover c-blue-focus">返回首页</a>
                </span>
            </div>
<div class="blog-footer-bottom" style="margin-top:10px;"></div>
<script src="https://g.csdnimg.cn/common/csdn-footer/csdn-footer.js" data-isfootertrack="false" type="text/javascript"></script>
<script type="text/javascript">
    window.csdn.csdnFooter.options = {
        el: '.blog-footer-bottom',
        type: 2
    }
</script>        </main>
<aside class="blog_container_aside">
<div id="asideProfile" class="aside-box">
    <div class="profile-intro d-flex">
        <div class="avatar-box d-flex justify-content-center flex-column">
            <a href="https://blog.csdn.net/wxflamy" target="_blank" data-report-click='{"mod":"popu_379","spm":"1001.2101.3001.4121","dest":"https://blog.csdn.net/wxflamy","ab":"new"}'>
                <img src="https://profile.csdnimg.cn/8/4/0/3_wxflamy" class="avatar_pic">
            </a>
        </div>
        <div class="user-info d-flex flex-column profile-intro-name-box">
            <div class="profile-intro-name-boxTop">
                <a href="https://blog.csdn.net/wxflamy" target="_blank" class="" id="uid" title="我才睡醒" data-report-click='{"mod":"popu_379","spm":"1001.2101.3001.4122","dest":"https://blog.csdn.net/wxflamy","ab":"new"}'>
                    <span class="name " username="wxflamy">我才睡醒</span>
                </a>
                <span>
                </span>
                <span class="flag expert-blog">
                <span class="bubble">CSDN认证博客专家</span>
                </span>
                <span class="flag company-blog">
                <span class="bubble">CSDN认证企业博客</span>
                </span>
            </div>
            <div class="profile-intro-name-boxFooter">
                <span class="personal-home-page personal-home-years" title="已加入 CSDN 11年">码龄11年</span>
                    <span class="personal-home-page">
                    <a class="personal-home-certification" href="https://i.csdn.net/#/uc/profile?utm_source=14998968" target="_blank" title="暂无认证">
                    <img src="https://csdnimg.cn/identity/nocErtification.png" alt="">
                    暂无认证
                    </a>
                    </span>
            </div>
        </div>
    </div>
    <div class="data-info d-flex item-tiling">
        <dl class="text-center" title="40">
            <a href="https://blog.csdn.net/wxflamy" data-report-click='{"mod":"1598321000_001","spm":"1001.2101.3001.4310"}' data-report-query="t=1">  
                <dt><span class="count">40</span></dt>
                <dd class="font">原创</dd>
            </a>
        </dl>
        <dl class="text-center" data-report-click='{"mod":"1598321000_002","spm":"1001.2101.3001.4311"}' title="73606">
            <a href="https://blog.csdn.net/rank/list/weekly" target="_blank">
                <dt><span class="count">7万+</span></dt>
                <dd class="font">周排名</dd>
            </a>
        </dl>
        <dl class="text-center" title="443996">
            <a href="https://blog.csdn.net/rank/list/total" data-report-click='{"mod":"1598321000_003","spm":"1001.2101.3001.4312"}' target="_blank">
                <dt><span class="count">44万+</span></dt>
                <dd class="font">总排名</dd>
            </a>
        </dl>
        <dl class="text-center" style="min-width:58px" title="270218">  
            <dt><span class="count">27万+</span></dt>
            <dd>访问</dd>
        </dl>
        <dl class="text-center" title="5级,点击查看等级说明">
            <dt><a href="https://blog.csdn.net/blogdevteam/article/details/103478461" target="_blank">
                <img class="level" src="https://csdnimg.cn/identity/blog5.png">
            </a>
            </dt>
            <dd>等级</dd>
        </dl>
    </div>
    <div class="item-rank"></div>
    <div class="data-info d-flex item-tiling">
        <dl class="text-center" title="2848">
            <dt><span class="count">2848</span></dt>
            <dd>积分</dd>
        </dl>
         <dl class="text-center" id="fanBox" title="359">
            <dt><span class="count" id="fan">359</span></dt>
            <dd>粉丝</dd>
        </dl>
        <dl class="text-center" title="139">
            <dt><span class="count">139</span></dt>
            <dd>获赞</dd>
        </dl>
        <dl class="text-center" title="293">
            <dt><span class="count">293</span></dt>
            <dd>评论</dd>
        </dl>
        <dl class="text-center" title="847">
            <dt><span class="count">847</span></dt>
            <dd>收藏</dd>
        </dl>
    </div>
    <div class="aside-box-footer" data-report-view='{"spm":"3001.4296"}'>
        <div class="badge-box d-flex">
            <div class="badge d-flex">
                <div class="icon-badge" title="签到新秀">
                    <div class="mouse-box">
                        <img class="medal-img" data-report-click='{"spm":"3001.4296"}' src="https://csdnimg.cn/medal/qiandao1@240.png" alt="签到新秀">
                    </div>
                </div>
                <div class="icon-badge" title="持之以恒">
                    <div class="mouse-box">
                        <img class="medal-img" data-report-click='{"spm":"3001.4296"}' src="https://csdnimg.cn/medal/chizhiyiheng@240.png" alt="持之以恒">
                    </div>
                </div>
                <div class="icon-badge" title="笔耕不辍">
                    <div class="mouse-box">
                        <img class="medal-img" data-report-click='{"spm":"3001.4296"}' src="https://csdnimg.cn/70592b2299594e37aedcaa91fc52a294.png" alt="笔耕不辍">
                    </div>
                </div>
                <div class="icon-badge" title="勤写标兵">
                    <div class="mouse-box">
                        <img class="medal-img" data-report-click='{"spm":"3001.4296"}' src="https://csdnimg.cn/medal/qixiebiaobing4@240.png" alt="勤写标兵">
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="profile-intro-name-boxOpration">
        <div class="opt-letter-watch-box">
        <a class="bt-button personal-letter" href="https://im.csdn.net/chat/wxflamy" target="_blank" rel="noopener">私信</a>
        </div>
        <div class="opt-letter-watch-box"> 
            <a class="personal-watch bt-button" id="btnAttent" >关注</a>  
        </div>
    </div>
</div>
 <div id="asideSearchArticle" class="aside-box">
	<div class="aside-content search-comter">
    <div class="aside-search aside-search-blog">         
        <input type="text" class="input-serch-blog" name="" autocomplete="off" value="" id="search-blog-words" placeholder="搜博主文章">
        <a class="btn-search-blog">
                    <img src="//csdnimg.cn/cdn/content-toolbar/csdn-sou.png?v=1587021042">
        </a>
    </div>
    </div>
</div>


<div id="asideHotArticle" class="aside-box">
	<h3 class="aside-title">热门文章</h3>
	<div class="aside-content">
		<ul class="hotArticle-list">
			<li>
				<a href="https://blog.csdn.net/wxflamy/article/details/79697584" target="_blank"  data-report-click='{"mod":"popu_541","spm":"1001.2101.3001.4139","dest":"https://blog.csdn.net/wxflamy/article/details/79697584","ab":"new"}'>
				“未发现数据源名称并且未指定默认驱动程序”的解决方法
					<img src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					<span class="read">41783</span>
                </a>
			</li>
			<li>
				<a href="https://blog.csdn.net/wxflamy/article/details/79360335" target="_blank"  data-report-click='{"mod":"popu_541","spm":"1001.2101.3001.4139","dest":"https://blog.csdn.net/wxflamy/article/details/79360335","ab":"new"}'>
				ROS中的点云处理
					<img src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					<span class="read">18839</span>
                </a>
			</li>
			<li>
				<a href="https://blog.csdn.net/wxflamy/article/details/79102661" target="_blank"  data-report-click='{"mod":"popu_541","spm":"1001.2101.3001.4139","dest":"https://blog.csdn.net/wxflamy/article/details/79102661","ab":"new"}'>
				UR机器人和ROS-Industrial入门
					<img src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					<span class="read">16829</span>
                </a>
			</li>
			<li>
				<a href="https://blog.csdn.net/wxflamy/article/details/79155060" target="_blank"  data-report-click='{"mod":"popu_541","spm":"1001.2101.3001.4139","dest":"https://blog.csdn.net/wxflamy/article/details/79155060","ab":"new"}'>
				LCM的安装与使用
					<img src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					<span class="read">13807</span>
                </a>
			</li>
			<li>
				<a href="https://blog.csdn.net/wxflamy/article/details/79549400" target="_blank"  data-report-click='{"mod":"popu_541","spm":"1001.2101.3001.4139","dest":"https://blog.csdn.net/wxflamy/article/details/79549400","ab":"new"}'>
				ROS中机械手臂的运动规划
					<img src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">
					<span class="read">11718</span>
                </a>
			</li>
		</ul>
	</div>
</div>
<div id="asideCategory" class="aside-box flexible-box">
    <h3 class="aside-title">分类专栏</h3>
    <div class="aside-content">
        <ul>
            <li>
                <a class="clearfix special-column-name" target="_blank" href="https://blog.csdn.net/wxflamy/category_9756301.html" data-report-click='{"mod":"popu_537","spm":"1001.2101.3001.4137","strategy":"pc付费专栏左侧入口","dest":"https://blog.csdn.net/wxflamy/category_9756301.html","ab":"new"}'>
                    <div class="special-column-bar "></div>
                    <img src="https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt="" onerror="this.src='https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64'">
                    <span class="title oneline">
                        VTK
                    </span>
                </a>
                <span class="special-column-num">2篇</span>
            </li>
            <li>
                <a class="clearfix special-column-name" target="_blank" href="https://blog.csdn.net/wxflamy/category_7403873.html" data-report-click='{"mod":"popu_537","spm":"1001.2101.3001.4137","strategy":"pc付费专栏左侧入口","dest":"https://blog.csdn.net/wxflamy/category_7403873.html","ab":"new"}'>
                    <div class="special-column-bar "></div>
                    <img src="https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt="" onerror="this.src='https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64'">
                    <span class="title oneline">
                        运动规划
                    </span>
                </a>
                <span class="special-column-num">6篇</span>
            </li>
            <li>
                <a class="clearfix special-column-name" target="_blank" href="https://blog.csdn.net/wxflamy/category_7405881.html" data-report-click='{"mod":"popu_537","spm":"1001.2101.3001.4137","strategy":"pc付费专栏左侧入口","dest":"https://blog.csdn.net/wxflamy/category_7405881.html","ab":"new"}'>
                    <div class="special-column-bar "></div>
                    <img src="https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt="" onerror="this.src='https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64'">
                    <span class="title oneline">
                        OSG
                    </span>
                </a>
            </li>
            <li>
                <a class="clearfix special-column-name" target="_blank" href="https://blog.csdn.net/wxflamy/category_7406928.html" data-report-click='{"mod":"popu_537","spm":"1001.2101.3001.4137","strategy":"pc付费专栏左侧入口","dest":"https://blog.csdn.net/wxflamy/category_7406928.html","ab":"new"}'>
                    <div class="special-column-bar "></div>
                    <img src="https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt="" onerror="this.src='https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64'">
                    <span class="title oneline">
                        机器人学
                    </span>
                </a>
                <span class="special-column-num">5篇</span>
            </li>
            <li>
                <a class="clearfix special-column-name" target="_blank" href="https://blog.csdn.net/wxflamy/category_7409100.html" data-report-click='{"mod":"popu_537","spm":"1001.2101.3001.4137","strategy":"pc付费专栏左侧入口","dest":"https://blog.csdn.net/wxflamy/category_7409100.html","ab":"new"}'>
                    <div class="special-column-bar "></div>
                    <img src="https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt="" onerror="this.src='https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64'">
                    <span class="title oneline">
                        Python
                    </span>
                </a>
            </li>
            <li>
                <a class="clearfix special-column-name" target="_blank" href="https://blog.csdn.net/wxflamy/category_7410765.html" data-report-click='{"mod":"popu_537","spm":"1001.2101.3001.4137","strategy":"pc付费专栏左侧入口","dest":"https://blog.csdn.net/wxflamy/category_7410765.html","ab":"new"}'>
                    <div class="special-column-bar "></div>
                    <img src="https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt="" onerror="this.src='https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64'">
                    <span class="title oneline">
                        ROS
                    </span>
                </a>
                <span class="special-column-num">26篇</span>
            </li>
            <li>
                <a class="clearfix special-column-name" target="_blank" href="https://blog.csdn.net/wxflamy/category_7422202.html" data-report-click='{"mod":"popu_537","spm":"1001.2101.3001.4137","strategy":"pc付费专栏左侧入口","dest":"https://blog.csdn.net/wxflamy/category_7422202.html","ab":"new"}'>
                    <div class="special-column-bar "></div>
                    <img src="https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt="" onerror="this.src='https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64'">
                    <span class="title oneline">
                        其他
                    </span>
                </a>
                <span class="special-column-num">7篇</span>
            </li>
        </ul>
    </div>
    <p class="text-center">
        <a class="flexible-btn" data-fbox="aside-archive"><img class="look-more" src="https://csdnimg.cn/release/blogv2/dist/pc/img/arrowDownWhite.png" alt=""></a>
    </p>
</div>
<div id="asideNewComments" class="aside-box">
    <h3 class="aside-title">最新评论</h3>
    <div class="aside-content">
        <ul class="newcomment-list">
            <li>
                <a class="title text-truncate" target="_blank" href="https://blog.csdn.net/wxflamy/article/details/79400702#comments_24087174" data-report-click='{"mod":"popu_542","spm":"1001.2101.3001.4231","dest":"https://blog.csdn.net/wxflamy/article/details/79400702#comments_24087174","ab":"new"}' data-report-view='{"mod":"popu_542","spm":"1001.2101.3001.4231","dest":"https://blog.csdn.net/wxflamy/article/details/79400702#comments_24087174","ab":"new"}'>ROS中机器人的底层控制</a>
                <p class="comment ellipsis">
                    <a href="https://blog.csdn.net/qq_44890524" class="user-name" target="_blank">求针对: </a>
                    <span class="code-comments">这个我用noetic跑通过</span>
                </p>
            </li>
            <li>
                <a class="title text-truncate" target="_blank" href="https://blog.csdn.net/wxflamy/article/details/86509177#comments_23536164" data-report-click='{"mod":"popu_542","spm":"1001.2101.3001.4231","dest":"https://blog.csdn.net/wxflamy/article/details/86509177#comments_23536164","ab":"new"}' data-report-view='{"mod":"popu_542","spm":"1001.2101.3001.4231","dest":"https://blog.csdn.net/wxflamy/article/details/86509177#comments_23536164","ab":"new"}'>利用VTK手动切割体数据，曲面切割</a>
                <p class="comment ellipsis">
                    <a href="https://blog.csdn.net/weixin_38999156" class="user-name" target="_blank">weixin_38999156: </a>
                    <span class="code-comments">已打赏，发个代码呗。809316690@qq.com</span>
                </p>
            </li>
            <li>
                <a class="title text-truncate" target="_blank" href="https://blog.csdn.net/wxflamy/article/details/79400702#comments_23519600" data-report-click='{"mod":"popu_542","spm":"1001.2101.3001.4231","dest":"https://blog.csdn.net/wxflamy/article/details/79400702#comments_23519600","ab":"new"}' data-report-view='{"mod":"popu_542","spm":"1001.2101.3001.4231","dest":"https://blog.csdn.net/wxflamy/article/details/79400702#comments_23519600","ab":"new"}'>ROS中机器人的底层控制</a>
                <p class="comment ellipsis">
                    <a href="https://blog.csdn.net/chestnutl" class="user-name" target="_blank">chestnutl: </a>
                    <span class="code-comments">老哥你好啊，我想请问下你文章里写到的那个七轴机器人的控制器像controller和transmission那些是怎么配置的啊</span>
                </p>
            </li>
            <li>
                <a class="title text-truncate" target="_blank" href="https://blog.csdn.net/wxflamy/article/details/79196682#comments_22358963" data-report-click='{"mod":"popu_542","spm":"1001.2101.3001.4231","dest":"https://blog.csdn.net/wxflamy/article/details/79196682#comments_22358963","ab":"new"}' data-report-view='{"mod":"popu_542","spm":"1001.2101.3001.4231","dest":"https://blog.csdn.net/wxflamy/article/details/79196682#comments_22358963","ab":"new"}'>MoveIt!规划场景</a>
                <p class="comment ellipsis">
                    <a href="https://blog.csdn.net/Digenb111" class="user-name" target="_blank">Digenb111: </a>
                    <span class="code-comments">请问打开moveit时规划的场景里面产生碰撞该怎么解决？</span>
                </p>
            </li>
            <li>
                <a class="title text-truncate" target="_blank" href="https://blog.csdn.net/wxflamy/article/details/103488559#comments_21522146" data-report-click='{"mod":"popu_542","spm":"1001.2101.3001.4231","dest":"https://blog.csdn.net/wxflamy/article/details/103488559#comments_21522146","ab":"new"}' data-report-view='{"mod":"popu_542","spm":"1001.2101.3001.4231","dest":"https://blog.csdn.net/wxflamy/article/details/103488559#comments_21522146","ab":"new"}'>VTK 三维 重建 体绘制 面绘制 面切割 手动切割</a>
                <p class="comment ellipsis">
                    <a href="https://blog.csdn.net/qq_45768023" class="user-name" target="_blank">qq_45768023: </a>
                    <span class="code-comments">大神，求源码，可以有偿哈。1276226686@qq.com</span>
                </p>
            </li>
        </ul>
    </div>
</div>
<div id="asideNewNps" class="aside-box common-nps-box">
    <h3 class="aside-title">您愿意向朋友推荐“博客详情页”吗？</h3>
    <div class="aside-content">
        <ul class="newnps-list">
            <li class="newnps-item" data-type="强烈不推荐">
                <div class="newnps-img-box">
                    <img class="newnps-img active" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeel1.png" alt="">
                    <img class="newnps-img default" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeelGrey1.png" alt="">
                </div>
                <div class="newnps-text">强烈不推荐</div>
            </li>
            <li class="newnps-item" data-type="不推荐">
                <div class="newnps-img-box">
                    <img class="newnps-img active" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeel2.png" alt="">
                    <img class="newnps-img default" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeelGrey2.png" alt="">
                </div>
                <div class="newnps-text">不推荐</div>
            </li>
            <li class="newnps-item" data-type="一般般">
                <div class="newnps-img-box">
                    <img class="newnps-img active" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeel3.png" alt="">
                    <img class="newnps-img default" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeelGrey3.png" alt="">
                </div>
                <div class="newnps-text">一般般</div>
            </li>
            <li class="newnps-item" data-type="推荐">
                <div class="newnps-img-box">
                    <img class="newnps-img active" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeel4.png" alt="">
                    <img class="newnps-img default" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeelGrey4.png" alt="">
                </div>
                <div class="newnps-text">推荐</div>
            </li>
            <li class="newnps-item" data-type="强烈推荐">
                <div class="newnps-img-box">
                    <img class="newnps-img active" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeel5.png" alt="">
                    <img class="newnps-img default" src="https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeelGrey5.png" alt="">
                </div>
                <div class="newnps-text">强烈推荐</div>
            </li>
        </ul>
        <div class="newnps-form-box">
        <div class="newnps-form">
            <input type="text" placeholder="请输入建议或反馈后点击提交" class="newnps-input">
            <span class="newnps-btn">提交</span>
        </div>
        </div>
    </div>
</div>
<div id="asideArchive" class="aside-box" style="display:block!important; width:300px;">
    <h3 class="aside-title">最新文章</h3>
    <div class="aside-content">
        <ul class="inf_list clearfix">
            <li class="clearfix">
            <a href="https://blog.csdn.net/wxflamy/article/details/117550533" target="_blank" data-report-click='{"mod":"popu_382","spm":"1001.2101.3001.4136","dest":"https://blog.csdn.net/wxflamy/article/details/117550533","ab":"new"}' data-report-view='{"mod":"popu_382","dest":"https://blog.csdn.net/wxflamy/article/details/117550533","ab":"new"}'>机械臂 碰撞检测 路径规划 视觉影像 智能分割 位姿估计 3D抓取 就这么结合到一起了</a>
            </li>
            <li class="clearfix">
            <a href="https://blog.csdn.net/wxflamy/article/details/112170535" target="_blank" data-report-click='{"mod":"popu_382","spm":"1001.2101.3001.4136","dest":"https://blog.csdn.net/wxflamy/article/details/112170535","ab":"new"}' data-report-view='{"mod":"popu_382","dest":"https://blog.csdn.net/wxflamy/article/details/112170535","ab":"new"}'>在谷歌colab上使用演示一下BlendMask应用</a>
            </li>
            <li class="clearfix">
            <a href="https://blog.csdn.net/wxflamy/article/details/103488559" target="_blank" data-report-click='{"mod":"popu_382","spm":"1001.2101.3001.4136","dest":"https://blog.csdn.net/wxflamy/article/details/103488559","ab":"new"}' data-report-view='{"mod":"popu_382","dest":"https://blog.csdn.net/wxflamy/article/details/103488559","ab":"new"}'>VTK 三维 重建 体绘制 面绘制 面切割 手动切割</a>
            </li>
        </ul>
        <div class="archive-bar"></div>
        <div class="archive-box">
                <div class="archive-list-item"><a href="https://blog.csdn.net/wxflamy?type=blog&amp;year=2021&amp;month=06" target="_blank" data-report-click='{"mod":"popu_538","spm":"1001.2101.3001.4138","ab":"new","dest":"https://blog.csdn.net/wxflamy?type=blog&amp;year=2021&amp;month=06"}'><span class="year">2021年</span><span class="num">2篇</span></a></div>
                <div class="archive-list-item"><a href="https://blog.csdn.net/wxflamy?type=blog&amp;year=2019&amp;month=12" target="_blank" data-report-click='{"mod":"popu_538","spm":"1001.2101.3001.4138","ab":"new","dest":"https://blog.csdn.net/wxflamy?type=blog&amp;year=2019&amp;month=12"}'><span class="year">2019年</span><span class="num">4篇</span></a></div>
                <div class="archive-list-item"><a href="https://blog.csdn.net/wxflamy?type=blog&amp;year=2018&amp;month=07" target="_blank" data-report-click='{"mod":"popu_538","spm":"1001.2101.3001.4138","ab":"new","dest":"https://blog.csdn.net/wxflamy?type=blog&amp;year=2018&amp;month=07"}'><span class="year">2018年</span><span class="num">35篇</span></a></div>
        </div>
    </div>
</div>
	<div id="footerRightAds" class="isShowFooterAds">
		<div class="aside-box">
			<div id="kp_box_57" data-pid="57"><iframe  src="https://kunpeng-sc.csdnimg.cn/?timestamp=1645783940/#/preview/1000628?positionId=57&adId=1020010&queryWord=rviz中的标记（markers）和交互标记（interactive markers）&spm=1001.2101.3001.5001&articleId=79347689&hk=1" frameborder="0" width= "300px"  height= "600px" scrolling="no" ></iframe><img class="pre-img-lasy"  data-src="https://kunyu.csdn.net/1.png?p=57&adId=1020010&a=1020010&c=1000628&k=rviz中的标记（markers）和交互标记（interactive markers）&spm=1001.2101.3001.5001&articleId=79347689&hk=1&d=1&t=3&u=f3a1e7b1193d4c9ea0501d2f357a20b4" style="display: block;width: 0px;height: 0px;"></div>
		</div>
	</div>
    <!-- 详情页显示目录 -->
<!--文章目录-->
<div id="asidedirectory" class="aside-box">
    <div class='groupfile' id="directory">
        <h3 class="aside-title">目录</h3>
        <div class="align-items-stretch group_item">
            <div class="pos-box">
            <div class="scroll-box">
                <div class="toc-box"></div>
            </div>
            </div>
        </div>
    </div>
</div>
</aside>
<script>
	$("a.flexible-btn").click(function(){
		$(this).parents('div.aside-box').removeClass('flexible-box');
		$(this).parents("p.text-center").remove();
	})
</script>
<script type="text/javascript"  src="https://g.csdnimg.cn/user-tooltip/2.7/user-tooltip.js"></script>
<script type="text/javascript"  src="https://g.csdnimg.cn/user-medal/2.0.0/user-medal.js"></script>    </div>
<div class="recommend-right align-items-stretch clearfix" id="rightAside" data-type="recommend">
    <aside class="recommend-right_aside">
        <div id="recommend-right" >
                                <div class="programmer1Box">
                        <div id="kp_box_530" data-pid="530"><iframe  src="https://kunpeng-sc.csdnimg.cn/?timestamp=1645783940/#/preview/1000628?positionId=530&adId=1020009&queryWord=rviz中的标记（markers）和交互标记（interactive markers）&spm=1001.2101.3001.4647&articleId=79347689&hk=1" frameborder="0" width= "300px"  height= "600px" scrolling="no" ></iframe><img class="pre-img-lasy"  data-src="https://kunyu.csdn.net/1.png?p=530&adId=1020009&a=1020009&c=1000628&k=rviz中的标记（markers）和交互标记（interactive markers）&spm=1001.2101.3001.4647&articleId=79347689&hk=1&d=1&t=3&u=ceaf8d5eac6e449b9117cf69d0f70726" style="display: block;width: 0px;height: 0px;"></div>
                    </div>
            <div class='flex-column aside-box groupfile' id="groupfile">
                <div class="groupfile-div">
                <h3 class="aside-title">目录</h3>
                <div class="align-items-stretch group_item">
                    <div class="pos-box">
                        <div class="scroll-box">
                            <div class="toc-box"></div>
                        </div>
                    </div>
                </div>
                </div>
            </div>
                <div id="recommendAdBox">
                    <div id="kp_box_479" data-pid="479"><div class="_gnumici5vli"></div>
    <script type="text/javascript">
        (window.slotbydup = window.slotbydup || []).push({
            id: "u5883818",
            container: "_gnumici5vli",
            async: true
        });
    </script>
    <!-- 多条广告如下脚本只需引入一次 -->
    <script type="text/javascript" src="//cpro.baidustatic.com/cpro/ui/cm.js" async="async" defer="defer" >
    </script><img class="pre-img-lasy" data-src="https://kunyu.csdn.net/1.png?p=479&adId=1015221&a=1015221&c=0&k=rviz中的标记（markers）和交互标记（interactive markers）&spm=1001.2101.3001.4834&articleId=79347689&d=1&t=3&u=85189cfd487f420a8b3d889f35aa954e" style="display: block;width: 0px;height: 0px;"></div>
                </div>
            <div class='aside-box kind_person d-flex flex-column'>
                    <h3 class="aside-title">分类专栏</h3>
                    <div class="align-items-stretch kindof_item" id="kind_person_column">
                        <div class="aside-content">
                            <ul>
                                <li>
                                    <a class="clearfix special-column-name" target="_blank" href="https://blog.csdn.net/wxflamy/category_9756301.html" data-report-click='{"mod":"popu_537","spm":"1001.2101.3001.4137","strategy":"pc付费专栏左侧入口","dest":"https://blog.csdn.net/wxflamy/category_9756301.html","ab":"new"}'>
                                        <div class="special-column-bar "></div>
                                        <img src="https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt="" onerror="this.src='https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64'">
                                        <span class="">
                                            VTK
                                        </span>
                                    </a>
                                    <span class="special-column-num">2篇</span>
                                </li>
                                <li>
                                    <a class="clearfix special-column-name" target="_blank" href="https://blog.csdn.net/wxflamy/category_7403873.html" data-report-click='{"mod":"popu_537","spm":"1001.2101.3001.4137","strategy":"pc付费专栏左侧入口","dest":"https://blog.csdn.net/wxflamy/category_7403873.html","ab":"new"}'>
                                        <div class="special-column-bar "></div>
                                        <img src="https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt="" onerror="this.src='https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64'">
                                        <span class="">
                                            运动规划
                                        </span>
                                    </a>
                                    <span class="special-column-num">6篇</span>
                                </li>
                                <li>
                                    <a class="clearfix special-column-name" target="_blank" href="https://blog.csdn.net/wxflamy/category_7405881.html" data-report-click='{"mod":"popu_537","spm":"1001.2101.3001.4137","strategy":"pc付费专栏左侧入口","dest":"https://blog.csdn.net/wxflamy/category_7405881.html","ab":"new"}'>
                                        <div class="special-column-bar "></div>
                                        <img src="https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt="" onerror="this.src='https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64'">
                                        <span class="">
                                            OSG
                                        </span>
                                    </a>
                                </li>
                                <li>
                                    <a class="clearfix special-column-name" target="_blank" href="https://blog.csdn.net/wxflamy/category_7406928.html" data-report-click='{"mod":"popu_537","spm":"1001.2101.3001.4137","strategy":"pc付费专栏左侧入口","dest":"https://blog.csdn.net/wxflamy/category_7406928.html","ab":"new"}'>
                                        <div class="special-column-bar "></div>
                                        <img src="https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt="" onerror="this.src='https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64'">
                                        <span class="">
                                            机器人学
                                        </span>
                                    </a>
                                    <span class="special-column-num">5篇</span>
                                </li>
                                <li>
                                    <a class="clearfix special-column-name" target="_blank" href="https://blog.csdn.net/wxflamy/category_7409100.html" data-report-click='{"mod":"popu_537","spm":"1001.2101.3001.4137","strategy":"pc付费专栏左侧入口","dest":"https://blog.csdn.net/wxflamy/category_7409100.html","ab":"new"}'>
                                        <div class="special-column-bar "></div>
                                        <img src="https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt="" onerror="this.src='https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64'">
                                        <span class="">
                                            Python
                                        </span>
                                    </a>
                                </li>
                                <li>
                                    <a class="clearfix special-column-name" target="_blank" href="https://blog.csdn.net/wxflamy/category_7410765.html" data-report-click='{"mod":"popu_537","spm":"1001.2101.3001.4137","strategy":"pc付费专栏左侧入口","dest":"https://blog.csdn.net/wxflamy/category_7410765.html","ab":"new"}'>
                                        <div class="special-column-bar "></div>
                                        <img src="https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt="" onerror="this.src='https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64'">
                                        <span class="">
                                            ROS
                                        </span>
                                    </a>
                                    <span class="special-column-num">26篇</span>
                                </li>
                                <li>
                                    <a class="clearfix special-column-name" target="_blank" href="https://blog.csdn.net/wxflamy/category_7422202.html" data-report-click='{"mod":"popu_537","spm":"1001.2101.3001.4137","strategy":"pc付费专栏左侧入口","dest":"https://blog.csdn.net/wxflamy/category_7422202.html","ab":"new"}'>
                                        <div class="special-column-bar "></div>
                                        <img src="https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64" alt="" onerror="this.src='https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64'">
                                        <span class="">
                                            其他
                                        </span>
                                    </a>
                                    <span class="special-column-num">7篇</span>
                                </li>
                            </ul>
                        </div>
                    </div>
            </div>
        </div>
    </aside>
</div>

<div class="recommend-right1  align-items-stretch clearfix" id="rightAsideConcision" data-type="recommend">
    <aside class="recommend-right_aside">
        <div id="recommend-right-concision" >
            <div class='flex-column aside-box groupfile' id="groupfileConcision">
                <div class="groupfile-div1">
                <h3 class="aside-title">目录</h3>
                <div class="align-items-stretch group_item">
                    <div class="pos-box">
                        <div class="scroll-box">
                            <div class="toc-box"></div>
                        </div>
                    </div>
                </div>
                </div>
            </div>
        </div>
    </aside>
</div>

</div>
<div class="mask-dark"></div>
<script src="https://csdnimg.cn/public/sandalstrap/1.4/js/sandalstrap.min.js"></script>
<div class="skin-boxshadow"></div>
<div class="directory-boxshadow"></div>
<div class="comment-side-box-shadow comment-side-tit-close" id="commentSideBoxshadow">
<div class="comment-side-content">
	<div class="comment-side-tit">
	<div class="comment-side-tit-count">评论&nbsp;<span class="count">1</span></div>
	<img class="comment-side-tit-close" src="https://csdnimg.cn/release/blogv2/dist/pc/img/closeBt.png"></div>
	<div id="pcCommentSideBox" class="comment-box comment-box-new2 " style="display:block">
		<div class="comment-edit-box d-flex">
			<div class="user-img">
				<a href="https://blog.csdn.net/qq_34761779" target="_blank">
					<img src="https://profile.csdnimg.cn/9/B/D/3_qq_34761779">
				</a>
			</div>
			<form id="commentform">
				<textarea class="comment-content" name="comment_content" id="comment_content" placeholder="欢迎高质量的评论，低质的评论会被折叠" maxlength="1000"></textarea>
				<div class="comment-operate-box">
					<div class="comment-operate-l">
						<span id="tip_comment" class="tip">还能输入<em>1000</em>个字符</span>
					</div>
					<div class="comment-operate-c">
						&nbsp;
					</div>
					<div class="comment-operate-r">
						<div class="comment-operate-item comment-emoticon">
							<img class="comment-operate-img" data-url="https://csdnimg.cn/release/blogv2/dist/pc/img/" src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentEmotionIcon.png" alt="表情包">
							<span class="comment-operate-tip">插入表情</span>
							<div class="comment-emoticon-box comment-operate-isshow">
								<div class="comment-emoticon-img-box"></div>
							</div>
						</div>
						<div class="comment-operate-item comment-code">
							<img class="comment-operate-img" data-url="https://csdnimg.cn/release/blogv2/dist/pc/img/" src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentCodeIcon.png" alt="表情包">
							<span class="comment-operate-tip">代码片</span>
							<div class="comment-code-box comment-operate-isshow">
								<ul id="commentCode">
									<li><a data-code="html">HTML/XML</a></li>
									<li><a data-code="objc">objective-c</a></li>
									<li><a data-code="ruby">Ruby</a></li>
									<li><a data-code="php">PHP</a></li>
									<li><a data-code="csharp">C</a></li>
									<li><a data-code="cpp">C++</a></li>
									<li><a data-code="javascript">JavaScript</a></li>
									<li><a data-code="python">Python</a></li>
									<li><a data-code="java">Java</a></li>
									<li><a data-code="css">CSS</a></li>
									<li><a data-code="sql">SQL</a></li>
									<li><a data-code="plain">其它</a></li>
								</ul>
							</div>
						</div>
						<div class="comment-operate-item">
							<input type="hidden" id="comment_replyId" name="comment_replyId">
							<input type="hidden" id="article_id" name="article_id" value="79347689">
							<input type="hidden" id="comment_userId" name="comment_userId" value="">
							<input type="hidden" id="commentId" name="commentId" value="">
							<a data-report-click='{"mod":"1582594662_003","spm":"1001.2101.3001.4227","ab":"new"}'>
							<input type="submit" class="btn-comment btn-comment-input" value="评论">
							</a>
						</div>
					</div>
				</div>
			</form>
		</div>
		<div class="comment-list-container">
			<div class="comment-list-box comment-operate-item">
			</div>
			<div id="lookGoodComment" class="look-good-comment side-look-comment">
				<a class="look-more-comment">查看更多评论<img src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentArrowDownWhite.png" alt=""></a>
			</div>
			<div id="lookFlodComment" class="look-flod-comment">
					<span class="count"></span>&nbsp;条评论被折叠&nbsp;<a class="look-more-flodcomment">查看</a>
			</div>
			<div class="opt-box text-center">
				<div class="btn btn-sm btn-link-blue" id="btnMoreComment"></div>
			</div>
		</div>
	</div>
	<div id="pcFlodCommentSideBox" class="pc-flodcomment-sidebox">
		<div class="comment-fold-tit"><span id="lookUnFlodComment" class="back"><img src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentArrowLeftWhite.png" alt=""></span>被折叠的&nbsp;<span class="count"></span>&nbsp;条评论
		 <a href="https://blogdev.blog.csdn.net/article/details/122245662" class="tip" target="_blank">为什么被折叠?</a>
		 <a href="https://bbs.csdn.net/forums/FreeZone" class="park" target="_blank">
		 <img src="https://csdnimg.cn/release/blogv2/dist/pc/img/iconPark.png">到【灌水乐园】发言</a>                                
		</div>
		<div class="comment-fold-content"></div>
		<div id="lookBadComment" class="look-bad-comment side-look-comment">
			<a class="look-more-comment">查看更多评论<img src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentArrowDownWhite.png" alt=""></a>
		</div>
	</div>
</div>
</div>
<div id="rewardNew" class="reward-popupbox-new">
	<p class="rewad-title">打赏作者<span class="reward-close"><img src="https://csdnimg.cn/release/blogv2/dist/pc/img/closeBt.png"></span></p>
	<dl class="profile-box">
		<dd>
		<a href="https://blog.csdn.net/wxflamy" data-report-click='{"mod":"popu_379","dest":"https://blog.csdn.net/wxflamy","ab":"new"}'>
			<img src="https://profile.csdnimg.cn/8/4/0/3_wxflamy" class="avatar_pic">
		</a>
		</dd>
		<dt>
			<p class="blog-name">我才睡醒</p>
			<p class="blog-discript">你的鼓励将是我创作的最大动力</p>
		</dt>
	</dl>
	<div class="reward-box-new">
			<div class="reward-content"><div class="reward-right"></div></div>
	</div>
	<div class="money-box">
				<span class="choose-money choosed" data-id="2">¥2</span>
				<span class="choose-money " data-id="4">¥4</span>
				<span class="choose-money " data-id="6">¥6</span>
				<span class="choose-money " data-id="10">¥10</span>
				<span class="choose-money " data-id="20">¥20</span>
				<input id="customizeMoney" class="customize-money" name="" type="" value="" placeholder="自定义"/>
				<div class="customize-tip">输入1-500的整数</div>
	</div>
	<div class="pay-box">
		<div class="pay-type-blance pay-type active" data-type="blance">
			<img class="unchoose" src="https://csdnimg.cn/release/blogv2/dist/pc/img/newUnChoose.png" alt="">
			<img class="choose"src="https://csdnimg.cn/release/blogv2/dist/pc/img/newChoose.png" alt="">
			<span class="pay-type-name">余额支付</span>
			<span class="pay-type-num">(余额：-- )</span>
		</div>
		<div class="pay-type-money pay-type" data-type="money">
			<img class="unchoose" src="https://csdnimg.cn/release/blogv2/dist/pc/img/newUnChoose.png" alt="">
			<img class="choose"src="https://csdnimg.cn/release/blogv2/dist/pc/img/newChoose.png" alt="">
			<span class="pay-type-name">扫码支付</span>
		</div>
	</div>
	<div class="sure-box">
		<div class="sure-box-money">
			<div class="code-box">
				<div class="code-num-box">
					<span class="code-name">扫码支付：</span><span class="code-num">¥2</span>
				</div>
				<div class="code-img-box">
					<div class="renovate">
					<img src="https://csdnimg.cn/release/blogv2/dist/pc/img/pay-time-out.png">
					<span>获取中</span>
					</div>
				</div>
				<div class="code-pay-box">
					<img src="https://csdnimg.cn/release/blogv2/dist/pc/img/newWeiXin.png" alt="">
					<img src="https://csdnimg.cn/release/blogv2/dist/pc/img/newZhiFuBao.png" alt="">
					<span>扫码支付</span>
				</div>
			</div>
		</div>
		<div class="sure-box-blance">
			<p class="tip">您的余额不足，请更换扫码支付或<a target="_blank" data-report-click='{"mod":"1597646289_003","spm":"1001.2101.3001.4302"}' href="https://i.csdn.net/#/wallet/balance/recharge?utm_source=RewardVip" class="go-invest">充值</a></p>
			<p class="is-have-money"><a class="reward-sure">打赏作者</a></p>
		</div>
	</div>
</div>
<div class="pay-code">
    <div class="pay-money">实付<span class="pay-money-span" data-nowprice='' data-oldprice=''>元</span></div>
    <div class="content-blance"><a class="blance-bt" href="javascript:;">使用余额支付</a></div>
    <div class="content-code">
    <div id="payCode" data-id="">
            <div class="renovate">
                <img src="https://csdnimg.cn/release/blogv2/dist/pc/img/pay-time-out.png">
                <span>点击重新获取</span>
            </div>
        </div>
        <div class="pay-style"><span><img src="https://csdnimg.cn/release/blogv2/dist/pc/img/weixin.png"></span><span><img src="https://csdnimg.cn/release/blogv2/dist/pc/img/zhifubao.png"></span><span><img src="https://csdnimg.cn/release/blogv2/dist/pc/img/jingdong.png"></span><span class="text">扫码支付</span></div>
    </div>
    <div class="bt-close"><svg t="1567152543821" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10924" xmlns:xlink="http://www.w3.org/1999/xlink" width="12" height="12"><defs><style type="text/css"></style></defs><path d="M512 438.378667L806.506667 143.893333a52.032 52.032 0 1 1 73.6 73.621334L585.621333 512l294.485334 294.485333a52.074667 52.074667 0 0 1-73.6 73.642667L512 585.621333 217.514667 880.128a52.053333 52.053333 0 1 1-73.621334-73.642667L438.378667 512 143.893333 217.514667a52.053333 52.053333 0 1 1 73.621334-73.621334L512 438.378667z" fill="" p-id="10925"></path></svg></div>
    <!-- <p style="margin-top: 8px;font-size: 14px;" class="text-center">支付成功即可阅读</p> -->
    <div class="pay-balance">
    <input type="radio" class="pay-code-radio" data-type="details"> 
    <span class="span">钱包余额</span>
    <span class="balance" style="color:#FC5531;font-size:14px;">0</span>  
    <div class="pay-code-tile">
        <img src="https://csdnimg.cn/release/blogv2/dist/pc/img/pay-help.png" alt="">
        <div class="pay-code-content">
            <div class="span">
                <p class="title">抵扣说明：</p>
                <p> 1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。<br> 2.余额无法直接购买下载，可以购买VIP、C币套餐、付费专栏及课程。</p>
            </div>
        </div>
    </div>
    </div>
    <a class="pay-balance-con" href="https://i.csdn.net/#/wallet/balance/recharge" target="_blank"><img src="https://csdnimg.cn/release/blogv2/dist/pc/img/recharge.png" alt=""><span  >余额充值</span></a>
</div>
<div style="display:none;">
	<img src="" onerror='setTimeout(function(){if(!/(csdn.net|iteye.com|baiducontent.com|googleusercontent.com|360webcache.com|sogoucdn.com|bingj.com|baidu.com)$/.test(window.location.hostname)){window.location.href="\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x63\x73\x64\x6e\x2e\x6e\x65\x74"}},3000);'>
</div>
<div class="keyword-dec-box" id="keywordDecBox"></div>
</body>
<script src="https://csdnimg.cn/release/blogv2/dist/components/js/pc_wap_highlight-2a2586c533.min.js" type="text/javascript"></script>
<script src="https://csdnimg.cn/release/blogv2/dist/components/js/pc_wap_common-fbcbe8567e.min.js" type="text/javascript"></script>
<script src="https://csdnimg.cn/release/blogv2/dist/components/js/edit_copy_code-f2c107abdd.min.js" type="text/javascript"></script>
<link rel="stylesheet" href="https://csdnimg.cn/release/blog_editor_html/release1.6.12/ckeditor/plugins/codesnippet/lib/highlight/styles/atom-one-light.css">
<script src="https://g.csdnimg.cn/user-accusation/1.0.5/user-accusation.js" type="text/javascript" ></script>
<script>
 // 全局声明
 if (window.csdn === undefined) {
      window.csdn = {};
    }
    window.csdn.sideToolbar = {
        options: {
            report:{
                isShow: true,
            },
            qr: {
                isShow: false,
            },
            guide: {
                isShow: true
            }
        }
    }
    $(function(){
        $(document).on('click',"a.option-box[data-type='report']",function() {
            window.csdn.loginBox.key({
              biz: 'blog',
              subBiz: 'other_service',
              cb: function(){
                window.csdn.feedback({
                  "type":'blog',
                  "rtype":'article',
                  "rid":articleId,
                  "reportedName":username,
                  "submitOptions":{
                    "title":articleTitle,
                    "contentUrl":articleDetailUrl
                  },
                  "callback":function(){
                    showToast({
                      text: "感谢您的举报，我们会尽快审核！",
                      bottom: '10%', 
                      zindex: 9000, 
                      speed: 500,
                      time: 1500
                    })
                  }
                })
              }
            })
        });
    })
</script>
    <script src="https://g.csdnimg.cn/baidu-search/1.0.12/baidu-search.js"  type="text/javascript"></script>
<script src="https://csdnimg.cn/release/download/old_static/js/qrcode.js"></script>
<script src="https://g.csdnimg.cn/lib/qrcode/1.0.0/qrcode.min.js"></script>
<script src="https://g.csdnimg.cn/user-ordercart/3.0.1/user-ordercart.js" type="text/javascript"></script>
<script src="https://g.csdnimg.cn/user-ordertip/5.0.1/user-ordertip.js" type="text/javascript" ></script>
<script src="https://g.csdnimg.cn/order-payment/4.0.1/order-payment.js" type="text/javascript" ></script>
<script src="https://csdnimg.cn/release/blogv2/dist/pc/js/common-063b84f165.min.js" type="text/javascript"></script>
<script src="https://csdnimg.cn/release/blogv2/dist/pc/js/detail-6ba3a38d3d.min.js" type="text/javascript"></script>
<script src="https://csdnimg.cn/release/blogv2/dist/pc/js/column-2e5cf567c5.min.js" type="text/javascript"></script>
<script src="https://g.csdnimg.cn/side-toolbar/3.4/side-toolbar.js" type="text/javascript"></script>
<script src="https://g.csdnimg.cn/copyright/1.0.4/copyright.js" type="text/javascript"></script>
<script>
    $(".MathJax").remove();
    if ($('div.markdown_views pre.prettyprint code.hljs').length > 0) {
        $('div.markdown_views')[0].className = 'markdown_views';
    }
</script>
<script type="text/javascript" src="https://csdnimg.cn/release/blog_mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/x-mathjax-config">
    MathJax.Hub.Config({
            "HTML-CSS": {
                    linebreaks: { automatic: true, width: "94%container" },
                    imageFont: null
            },
            tex2jax: {
                preview: "none",
                ignoreClass:"title-article"
            },
            mml2jax: {
                preview: 'none'
            }
    });
</script>
<script type="text/javascript" crossorigin src="https://g.csdnimg.cn/common/csdn-login-box/csdn-login-box.js"></script></html>
